【TeeChart Pro ActiveX教程】(六):使用系列(下)

本教程介绍了在TeeChart Pro ActiveX中如何使用系列。

下载TeeChart Pro ActiveX最新版本

将数据添加到系列

大多数系列类型(ODBC数据源教程8和函数教程7除外)使用Add和ADDXY方法添加数据。 有一些例外,请参阅下表,了解它们如何区别的示例:

Series Type Add Series points Delete Series points
     

Basic

   

Gantt

GanttSeries.AddGantt
GanttSeries.AddGanttColor

Series.Delete
Series.DeleteRange

Shape

ShapeSeries.X0,
ShapeSeries.Y0,
ShapeSeries.X1,
ShapeSeries.Y1

TChart.RemoveSeries
(Each Shape is a unique Series)

Bubble

BubbleSeries.AddBubble

Series.Delete
Series.DeleteRange

Line

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Bar

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

HorizBar

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Area

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Point

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Pie

Series.Add
Series.AddNull
Series.AddArray

Series.Delete
Series.DeleteRange

Fast Line

FastLineSeries.AddRealTime
Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

HorizLine

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

HorizArea

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

3D

   

Surface

SurfaceSeries.AddXYZ
SurfaceSeries.AddArrayXYZ
SurfaceSeries.AddArrayGrid

Series.Delete
Series.DeleteRange

Contour

ContourSeries.AddXYZ
ContourSeries.AddArrayXYZ
ContourSeries.AddArrayGrid

Series.Delete
Series.DeleteRange

Waterfall

Waterfall.AddXYZ
Waterfall.AddArrayXYZ
Waterfall.AddArrayGrid

Series.Delete
Series.DeleteRange

Color Grid

ColorGrid.AddXYZ
ColorGrid.AddArrayXYZ
ColorGrid.AddArrayGrid

Series.Delete
Series.DeleteRange

Vector 3D

Vector3D.AddVector
Vector3D.AddXYZ
Vector3D.AddArrayXYZ
Vector3D.AddArrayGrid

Series.Delete
Series.DeleteRange

Tower

Tower.AddXYZ
Tower.AddArrayXYZ
Tower.AddArrayGrid

Series.Delete
Series.DeleteRange

Point3D

Point3DSeries.AddXYZ

Series.Delete
Series.DeleteRange

Triangle Surf.

TriSurface.AddXYZ
TriSurface.AddArrayXYZ
TriSurface.AddArrayGrid

Series.Delete
Series.DeleteRange

Other

   

Bar 3D

Bar3D.AddBar
Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Image Bar

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Wind Rose

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Clock

None

None

Line Point

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Bar Join

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Calender

Calendar.Date

None

Big Candle

 

 

ImagePoint

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

DeltaPoint

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Extended

   

Polar

PolarSeries.AddPolar

Series.Delete
Series.DeleteRange

Radar

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Arrow

ArrowSeries.AddArrow

Series.Delete
Series.DeleteRange

Bezier

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Donut

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Smith

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Pyramid

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Map

Map.Shapes.Add

Series.Delete
Series.DeleteRange

Gauge

Gauge.Value

None

Financial

   

Candle

CandleSeries.AddCandle

Series.Delete
Series.DeleteRange

Volume

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

Point & Figure

PointFigure.AddOHLC

Series.Delete
Series.DeleteRange

Stats

   

Error

ErrorSeries.AddErrorBar

Series.Delete
Series.DeleteRange

Error Bar

ErrorBarSeries.AddErrorBar

Series.Delete
Series.DeleteRange

High-Low

HighLow.AddHighLow

Series.Delete
Series.DeleteRange

Histogram

Series.Add
Series.AddXY
Series.AddNull
Series.AddNullXY
Series.AddArray

Series.Delete
Series.DeleteRange

BoxPlot

BoxPlot.Median
BoxPlot.Quartile1
BoxPlot.Quartile3
BoxPlot.InnerFence1
BoxPlot.InnerFence3
BoxPlot.OuterFence1
BoxPlot.OuterFence3

TChart.RemoveSeries
(Each BoxPlot is a unique Series)

Horizontal BoxPlot

BoxPlot.Median
BoxPlot.Quartile1
BoxPlot.Quartile3
BoxPlot.InnerFence1
BoxPlot.InnerFence3
BoxPlot.OuterFence1
BoxPlot.OuterFence3

TChart.RemoveSeries
(Each BoxPlot is a unique Series)

Funnel

Funnel.AddSegment

Series.Delete
Series.DeleteRange

请注意,不使用Add或AddXY方法的Series,可以在系列中访问其特定于系列的数据添加方法。“as [SeriesType]”属性(例如,Series.asCandle.AddCandle中的AddCandle; Series.asGantt.AddGantt中的AddGantt))。

颜色

添加点时,可以手动为点添加颜色

例如:

TChart1.Series(0).Add 46, "My first value", vbYellow

或者使用TeeChart常量clTeeColor,告诉TeeChart分配颜色。 TeeChart将为每个新系列选择最多16种独特且尚未使用的颜色中的一种。

例如:

TChart1.Series(0).Add 46, "My first value", clTeeColor

可以为Point添加“非颜色”,以便为ValueList中的值保留空间,而不会在Chart上显示。

例如:

TChart1.Series(0).Add 46, "My hidden value", clNone

从系列中删除数据点

使用Series.Delete从Series中删除一个点。

例如:

TChart.Series(0).Delete(7) ; (8th point - Points index start at zero)

可以从系列中删除点范围:

Private Sub Command1_Click()
TChart1.Series(0).DeleteRange 5, 5 ‘(Deletes points 5, 6, 7, 8, & 9 from the Series)
End Sub

Private Sub Form_Load()
With TChart1
    .AddSeries scLine
    .Series(0).FillSampleValues 20
End With
End Sub

向系列添加空点
有关支持AddNull方法的系列类型列表,请参阅向系列添加数据表。 顾名思义,AddNull将为系列添加一个Null点,允许您为该点定义一个标签,但在该点处系列中断。 在Line Series的情况下,中断前的最后一个点不会连接到中断后的第一个点。 请参见Series.AddNull和Series.AddNullXY。

例如:

TChart1.Series(0).AddNull "my null value"

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

例如:

TChart1.AddSeries(scLine)  ' Adds a Line Series

(*注意:Microsoft在Internet Explorer中实现的VBScript不支持TeeChart Enum常量(scLine,scBar等)。您必须使用等价整数(0,1等)来添加新的Series类型。请参阅ESeriesClass 完整列表。此规则适用于使用VBscript的所有TeeChart ENum常量。

例如:

TChart1.AddSeries(0)  ' Adds a Line Series (vbscript)
With TChart1.Series(0) .HorizontalAxis = aTopAxis .VerticalAxis = aRightAxisEnd With

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

With TChart1.Series(1)  .DataSource = "Series1"  '  Series1 es Series(0)  .SetFunction tfCopyEnd With

要通过代码更改系列顺序,请使用TChart.ExchangeSeries。

TChart1.ExchangeSeries 0, 1  ' Change Series(0) with Series(1) in the index order

*注意。 交换Series后,系列的索引将被更改。 因此,如果代码重新运行,上面的代码行将永久地交换2系列’0’和’1’,因为0变为1,1变为0。

系列价值表
TeeChart系列通过ValueList接口将其值存储在可访问和可修改的Valuelist中。 有关下面概述的技术的工作示例,请参阅示例文件夹下面标题为“Interactive”的Visual Basic示例代码。

访问系列值
您可以访问列表中的任何值:

msgbox TChart1.Series(0).XValues.Value(3)'Displays value of 4th point (index starts at 0) in Series0

以这种方式访问的值可用于设置Series数据的陷阱:

With TChart1.Series(0)   For t = 0 To .Count - 1     If .YValues.Value(t) > 900 Then       MsgBox "Value: " & .XValues.Value(t) & ", " _              & .YValues.Value(t) & " exceeds limit"     End If   Next tEnd With

可以通过一些Series方法和几个Chart事件使用的PointIndex值获得相同的值。

Private Sub TChart1_OnClickSeries(ByVal SeriesIndex As Long, ByVal ValueIndex As Long, ByVal Button As TeeChart.EMouseButton, ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)If SeriesIndex = 0 Then  MsgBox "ValueIndex is: " & ValueIndex  MsgBox "Point's Y value is: " & TChart1.Series(SeriesIndex).YValues.Value(ValueIndex)End IfTChart1.StopMouse  'Use Stopmouse to prevent Zoom event activatingEnd Sub

使用值的示例
此代码根据用户的鼠标单击修改BarSeries Bar的值。 请参阅TeeChart的Interactive Visual Basic演示。

'Use the OnClickSeries or OnclickBackground event to determine where the user has clicked.Private Sub TChart1_OnClickBackground(ByVal Button As TeeChart.EMouseButton, ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)If CInt(TChart1.Axis.Bottom.CalcPosPoint(X)) > -1 Then  Select Case Button  Case 1    UpdatePoint CInt(TChart1.Axis.Bottom.CalcPosPoint(X)), CInt(TChart1.Axis.Left.CalcPosPoint(Y))  End SelectEnd IfEnd SubPrivate Sub TChart1_OnClickSeries(ByVal SeriesIndex As Long, ByVal ValueIndex As Long, ByVal Button As TeeChart.EMouseButton, ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)  UpdatePoint ValueIndex, CInt(TChart1.Axis.Left.CalcPosPoint(Y))End Sub

在这两种情况下,请调用UpdatePoint Sub例程来修改Bar的值:

Private Sub UpdatePoint(Bar, Y As Double)  If Bar < TChart1.Series(0).Count Then    TChart1.Series(0).YValues.Value(Bar) = Int(Y)  End IfEnd Sub

系列活动
上一节介绍了Series事件的一些用法。 本节介绍了一些其他用途。

OnClickSeries
您可以使用OnClickSeries事件来获取有关Series的几乎所有信息(请参阅“访问系列值”一节)。

'These examples apply to a Series with Datetime data'eg These test values may be used for the following event examplesPrivate Sub Command1_Click() TChart1.AddSeries scLine With TChart1.Series(0)  .XValues.DateTime = True  .asLine.Pointer.Visible = True  .Marks.Visible = True  'Here with European dateformat  .AddXY DateValue("1/1/1999") + TimeValue("11:59:00"), 45, "", clTeeColor  .AddXY DateValue("1/1/1999") + TimeValue("21:59:00"), 23, "", clTeeColor  .AddXY DateValue("2/1/1999") + TimeValue("11:59:00"), 43, "", clTeeColor  .AddXY DateValue("2/1/1999") + TimeValue("21:59:00"), 12, "", clTeeColor  .AddXY DateValue("3/1/1999") + TimeValue("10:59:00"), 12, "", clTeeColor  .AddXY DateValue("3/1/1999") + TimeValue("21:59:00"), 11, "", clTeeColor  .AddXY DateValue("4/1/1999") + TimeValue("11:59:00"), 34, "", clTeeColor  .AddXY DateValue("4/1/1999") + TimeValue("21:59:00"), 15, "", clTeeColor  .AddXY DateValue("4/1/1999") + TimeValue("23:59:00"), 28, "", clTeeColor  .AddXY DateValue("5/1/1999") + TimeValue("09:59:00"), 32, "", clTeeColor  .AddXY DateValue("5/1/1999") + TimeValue("21:59:00"), 32, "", clTeeColor End With TChart1.Axis.Bottom.SetMinMax TChart1.Series(0).XValues.First, _                               TChart1.Series(0).XValues.Last + (2 / 12)End Sub

您可以使用此事件显示Series’Clicked’值

Private Sub TChart1_OnClickSeries(ByVal SeriesIndex As Long, ByVal ValueIndex As Long, ByVal Button As TeeChart.EMouseButton, ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)  'The below will show the Value of the nearest Point, not the exact Axis value at the clicked X and Y.  MsgBox ("Date is:" & Format(TChart1.Series(SeriesIndex).XValues.Value(ValueIndex), "dd/mm/yyyy hh:mm:ss") _            & " Value is:" & TChart1.Series(SeriesIndex).YValues.Value(ValueIndex))  TChart1.StopMouseEnd Sub

或者:

Private Sub TChart1_OnClickSeries(ByVal SeriesIndex As Long, ByVal ValueIndex As Long, ByVal Button As TeeChart.EMouseButton, ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)  'The below will show the exact Axis values at the X,Y clicked.  MsgBox ("Date is:" & Format(TChart1.Series(SeriesIndex).XScreenToValue(X), "dd/mm/yyyy hh:mm:ss") _             & " Value is:" & TChart1.Series(SeriesIndex).YScreenToValue(Y))  TChart1.StopMouseEnd Sub

OnGetSeriesPointerStyle
对于那些使用TChart指针的系列,您可以使用OnGetSeriesPointer事件访问和修改指针:

'Drawing an Uptriangle if the Point is higher than the last, DownTriangle if lower, etc.Private Sub TChart1_OnGetSeriesPointerStyle(ByVal SeriesIndex As Long, ByVal ValueIndex As Long, AStyle As TeeChart.EPointerStyle) If ValueIndex > 0 Then   If TChart1.Series(SeriesIndex).YValues.Value(ValueIndex) > TChart1.Series(SeriesIndex).YValues.Value(ValueIndex - 1) Then     AStyle = psTriangle   ElseIf TChart1.Series(SeriesIndex).YValues.Value(ValueIndex) < TChart1.Series(SeriesIndex).YValues.Value(ValueIndex - 1) Then     AStyle = psDownTriangle   Else     AStyle = psDiamond   End If Else   AStyle = psDiamond End IfEnd Sub

OnGetSeriesMark
使用OnGetSeriesMark事件在运行时修改标记内容:

此代码根据相对于最后一个箭头长度的值更改Marktext也会更改。 TeeChart支持在重叠的情况下拖动标记,请参阅VB示例文件夹中的VB“移动标记”示例。

Private Sub TChart1_OnGetSeriesMark(ByVal SeriesIndex As Long, ByVal ValueIndex As Long, MarkText As String) If ValueIndex > 0 Then   If TChart1.Series(SeriesIndex).YValues.Value(ValueIndex) > TChart1.Series(SeriesIndex).YValues.Value(ValueIndex - 1) Then     MarkText = MarkText & " (Up)"   ElseIf TChart1.Series(SeriesIndex).YValues.Value(ValueIndex) < TChart1.Series(SeriesIndex).YValues.Value(ValueIndex - 1) Then     TChart1.Series(SeriesIndex).Marks.ArrowLength = 5     MarkText = MarkText & Chr$(13) & "(Down)"   Else     TChart1.Series(SeriesIndex).Marks.ArrowLength = 25     MarkText = MarkText & Chr$(13) & "(No change)"   End If End IfEnd Sub

OnMouseEnterSeries和OnMouseLeaveSeries
系列活动的一个例子如下:

Private Sub Form_Load()With TChart1    .Aspect.View3D = False    .AddSeries scBar    .Series(0).FillSampleValues 10    .Series(0).Marks.Visible = FalseEnd WithEnd SubPrivate Sub TChart1_OnMouseEnterSeries(ByVal SeriesIndex As Long)Dim clicked As Long  clicked = TChart1.Series(SeriesIndex).GetMousePoint  ' Show Series name and point index and value  Label1.Caption = "Series: " + TChart1.Series(SeriesIndex).Name + _                 "  point:" + Str(clicked) + _                 "  value:" + Str(TChart1.Series(SeriesIndex).YValues.Value(clicked))End SubPrivate Sub TChart1_OnMouseLeaveSeries(ByVal SeriesIndex As Long)  Label1.Caption = ""End Sub

 

标签:图表图表库ActiveX图表解决方案图表控件teechart

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月12日
下一篇 2018年10月12日

相关推荐

发表回复

登录后才能评论