我正在尝试使用vb图表绘制图表。缺少一些X值,我想在系列图中留下空白。即,X值从0.695,0.7,0.705开始,依此类推。但它们之间可能存在一些差距(例如:0.74,0.745,1.71,1.715),我希望将其留作差距(即0.745至1.71)。
如果有帮助的话,我能够创建一个空点数组。以下是相同的代码。
Dim interval As Double = 0.0
Dim empty(0) As Double
Dim decimalpart As Integer = 0
interval = freq1(1) - freq1(0)
If interval.ToString().IndexOf(".") = -1 Then
decimalpart = 0 'No decimal part
Else
decimalpart = interval.ToString().Substring(interval.ToString().IndexOf(".") + 1).Length 'To find the number of decimal part
End If
y = 0
For i As Integer = 0 To freq1.Length - 2 'Dont need to access the last data. It would be accessed in the previous loop
If Math.Round((freq1(i + 1) - freq1(i)), decimalpart) > interval Then
empty(y) = freq1(i) + interval
y += 1
ReDim Preserve empty(y)
While (empty(y - 1) + interval < freq1(i + 1))
empty(y) = empty(y - 1) + interval
y += 1
ReDim Preserve empty(y)
End While
End If
Next
ReDim Preserve empty(y - 1)
上面的代码找到间隔,看看下一个值是否与区间范围有关。否则,它会发现使用间隔值递增的值。 freq1()是包含X轴值的数组。但是,我不确定如何使用empty()删除X轴值。 (不确定,如果可以使用Chart.Series()。EmptyPointStyle)
答案 0 :(得分:0)
我想展示图表系列图中出现的差距。
我不打算假装你提供的代码正在做什么,但是通过将DataPoint.IsEmpty
属性设置为True
来实现空点的线图中的间隙。
这是一个简单的例子。
Dim s As New Series
s.ChartType = SeriesChartType.FastLine
s.Color = Color.Black
s.BorderWidth = 2
' make some points
For x As Double = 0.5 To 4 Step 0.025
Dim dp As New DataPoint(x, (2.0 * x + 3))
' apply some filtering criteria to set some points to empty
If dp.XValue >= 1.2 AndAlso dp.XValue < 1.5 Then dp.IsEmpty = True
If dp.XValue >= 3.1 AndAlso dp.XValue < 3.4 Then dp.IsEmpty = True
s.Points.Add(dp)
Next
Chart1.Series.Clear()
Chart1.Legends.Clear()
Chart1.Series.Add(s)
您可以阅读有关此主题的更多信息:Using Empty Data Points in Chart Controls