teechart的addarray_【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会通过在图表库中显示不合适的系列类型来帮助您。 您可以在一个图表中放置的系列数量没有实际限制。

添加新系列

使用图表编辑器(参见教程1)或按代码添加系列。

例如:

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)

系列被添加到可由Index,TChart1.Series(index)访问的SeriesList,从第一个系列的0开始。 TeeChart Pro为系列(Series1,Series2等)添加默认名称。 您可以使用Series.Title属性修改名称。

选择系列的轴

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

With TChart1.Series(0)

.HorizontalAxis = aTopAxis

.VerticalAxis = aRightAxis

End With

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

连接系列

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

With TChart1.Series(1)

.DataSource = "Series1" ' Series1 es Series(0)

.SetFunction tfCopy

End With

更改系列订单

使用图表编辑器可以非常轻松地更改系列顺序。 转到编辑器的首页,突出显示要移动的系列。 使用右侧的箭头按钮以系列顺序向上或向下移动系列。 系列订单将决定图表中系列相对于其他系列的相对显示位置。 将系列设置为“Active=False”将从图表中隐藏系列,但保持其数据内容不变。

要通过代码更改系列顺序,请使用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 t

End 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 If

TChart1.StopMouse 'Use Stopmouse to prevent Zoom event activating

End 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 Select

End If

End 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)

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 If

End 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 examples

Private 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.StopMouse

End 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.StopMouse

End 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 If

End 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 If

End Sub

OnMouseEnterSeries和OnMouseLeaveSeries

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

Private Sub Form_Load()

With TChart1

.Aspect.View3D = False

.AddSeries scBar

.Series(0).FillSampleValues 10

.Series(0).Marks.Visible = False

End With

End Sub

Private 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 Sub

Private Sub TChart1_OnMouseLeaveSeries(ByVal SeriesIndex As Long)

Label1.Caption = ""

End Sub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值