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
總結
以上是生活随笔為你收集整理的teechart的addarray_【TeeChart Pro ActiveX教程】(六):使用系列(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: faile什么意思_fail是什么意思_
- 下一篇: python计算三阶行列式