我有6个数据数组longs
。我想找到一种方法将所有六个数组图形化为Chart Control
上的单独行。
我已经创建了Chart
对象,在我的Series Collection Editor
我有6个成员,但我找不到一个按chart1.series1.setData(myArray)
行做某事的函数。
我知道我可以通过并在每个点上调用.add()
,但我想知道是否有直接的方法将数组分配给Series
。
答案 0 :(得分:3)
除了数据绑定之外,没有内置方法可以添加整个范围。正如您所说,您可以调用系列中AddXY
属性(或类型Points
中的一个相关方法)的DataPointCollection
方法,如下所示:
'Add data from Array1 to the first series of the chart
Chart.Series(0).Points.Clear() 'Clear all points
For i = 0 to Array1.Count - 1
Chart.Series(0).Points.AddXY(i, Array1(i)) 'Adds the data from the array to the first series
Next
如果您拥有多维数据(例如Dim Data()() As Long
),则可以执行类似
For a = 0 to Data.Count - 1
Chart.Series(a).Points.Clear() 'Clear all points from the ath series
For i = 0 to Data(a).Count - 1
Chart.Series(a).Points.AddXY(i, Data(a)(i)) 'Adds the data from the ath array to the ath series
Next
Next
注意,由于您没有提供进一步的信息,因此X值只是一个索引(0到数组的计数 - 1)。
或者您可以在新的Module
Public Module Extensions
<System.Runtime.CompilerServices.Extension>
Public Sub AddRange(d As System.Windows.Forms.DataVisualization.Charting.DataPointCollection, data() As Long)
Dim meCount As Integer = d.Count
For i = 0 To data.Count - 1
d.AddXY(meCount + i, data(i))
Next
End Sub
End Module
现在,您只需为该系列的AddRange
属性调用Points
方法:
Chart.Series(0).Points.AddRange(Array1)
答案 1 :(得分:2)
你可以通过Jens提到的逐点添加来实现,这可以找到。另一种应该正常工作的方法是:
For a as integer = 0 to AmountOfSeries.count - 1 step 1
Chart1.Series(a).Points.DataBindXY(ArrayX1, ArrayY1)
Next
这可能更接近您所寻找的 - 一种将两个数组设置为系列的方法。
这里只有一个系列会是什么样子:
Dim xs As Double() = {0, 1, 2, 3, 4}
Dim ys As Double() = {0, 1, 2, 3, 4}
Chart1.Series(0).Points.DataBindXY(xs, ys)