【TeeChart for Java教程】(六)下:使用系列——在图表上混合系列类型

【下载TeeChart for Java最新版本】

(一)在图表上混合系列类型

TeeChart Pro提供了一个空的Chart Canvas作为数据系列的背景,这意味着没有预定义图表类型。您可以将所需的图表类型定义为要显示的系列类型的混合。由于某些系列类型的特殊性质,在图表上混合一些系列类型是不切实际的。当您到达添加新系列时,TeeChart会通过在图表库中显示不合适的系列类型来帮助您,您可以在一个图表中放置的系列数量没有实际限制。

1.1 添加新系列

按代码添加系列,例:

public void jButton1_actionPerformed(ActionEvent e) {

    Bar bar1 = new Bar(tChart1.getChart().chart);
        bar1.fillSampleValues(10);
    } 
};

1.2 选择系列的轴

添加到图表中的系列将自动将左轴和下轴作为参考轴,您可以通过选择相关系列的“Series General”页面来更改图表编辑器中的参考轴,有4个轴可供选择,Top,Left,Bottom和Right,通过代码,更改轴将如下所示:

bar1.setHorizontalAxis(HorizontalAxis.TOP);
bar1.setVerticalAxis(VerticalAxis.RIGHT);

每个轴可以关联1个以上的系列,TeeChart将决定适合与Axis匹配的系列的最佳比例,但您可以自己更改Axis scales,可以添加附加轴,它们将复制与前4轴相对应的刻度。

1.3 连接系列

您可以使用Series作为另一个Series的数据源,通过设置第二系列的数据源,可以使用图表编辑器完成此操作。转到“Series”选项卡“Datasource”页面。选择“Function”作为数据源类型。将出现两个列表框,可用系列和选定系列。选择要用作本系列数据源的系列,然后在上面名为Function:的Combobox中,选择Copy作为功能类型。请注意,以这种方式,任何系列都可以定义为其他系列的功能,功能类型可以是功能组合框中可用的列表中的任何一个。要通过代码执行相同操作,请参阅下文:

public void bFuncion_actionPerformed(ActionEvent e) {
Bar bar1 = new Bar();
bar1.fillSampleValues();
Line line1 = new Line();

com.steema.teechart.functions.Average average1 = new com.steema.teechart.functions.Average();
line1.setFunction(average1);
line1.setDataSource(bar1);
line1.checkDataSource(); 
}

1.4 更改系列order

使用图表编辑器可以非常轻松地更改系列顺序,转到编辑器的首页,突出显示要移动的系列,使用右侧的箭头按钮以系列顺序向上或向下移动系列。系列订单将决定图表中系列相对于其他系列的相对显示位置,通过代码使用SeriesList属性或ExchangeSeries方法,例:

tChart1.exchangeSeries(0,1);  //Change Series(0) with Series(1) in the index order

*注意,交换Series后,系列的索引将被更改。因此,如果代码重新运行,上面的代码行将永久地交换2系列'0'和'1',因为0变为1,1变为0。将系列设置为“Active:=假”将从图表中隐藏系列,但保持其数据内容不变。

(二)Series Value list

TeeChart系列通过TChartValueList组件将其值存储在可访问和可修改的Valuelist中。

2.1 使用Values的示例

upDatePoint(valueIndex,tChart1.getAxes().getLeft().calcPosPoint(e.Y));

调用UpdatePoint Sub例程来修改Bar的值:

private void upDatePoint(int Bar, double Y)
	{ 
		if(Bar < tChart1.getSeries(0).getCount())
		{
			tChart1.getSeries(0).getYValues().setValue(Bar,Y);
			tChart1.paint(tChart1.getGraphics());
		}
	}

2.2 Series events

2.2.1 OnGetSeriesPointerStyle

对于那些使用TChart指针的系列,您可以使用OnGetSeriesPointer事件访问和修改指针:如果Point高于最后一个,则绘制一个Uptriangle,如果更低,则绘制一个UpTriangle等。

if(e.ValueIndex > 0)  {
            if(line1.getYValues().getValue(e.ValueIndex) > 
               line1.getYValues().getValue(e.ValueIndex - 1))  {                
                e.Style = PointerStyles.TRIANGLE;
            }
            else if(line1.getYValues().getValue(e.ValueIndex) < 
                    line1.getYValues().getValue(e.ValueIndex - 1)) {
                e.Style = PointerStyles.DOWNTRIANGLE;
            }
            else {
                e.Style = PointerStyles.DIAMOND;
            }
        }
        else {
            e.Style = PointerStyles.DIAMOND;
        } 

2.2.2 OnGetSeriesMark

使用OnGetSeriesMark事件在运行时修改标记内容。以下代码根据相对于最后一个的值改变MarkText,TeeChart支持通过DragMarks工具在重叠的情况下拖动标记:

 if(e.ValueIndex > 0)  {
                 if(line1.getYValues().getValue(e.ValueIndex) >
			line1.getYValues().getValue(e.ValueIndex - 1)) {
                     e.MarkText = e.MarkText + " (Up)";
                 }
                 else if(line1.getYValues().getValue(e.ValueIndex) < 
			line1.getYValues().getValue(e.ValueIndex - 1)) { 
                    e.MarkText = e.MarkText + " (Down)";
                 }
                 else {
                     e.MarkText = e.MarkText + " (No Change)";
                 }
             }
         }
         

猜你喜欢

转载自blog.csdn.net/xiaochuachua/article/details/82620532