首页 > 解决方案 > 仅显示完整的 X 轴间隔 VB.NET

问题描述

我正在使用 .NET 图表库来显示折线图(电压与时间的关系)。完整的数据长度总是变化的(可以在 10ms 的数据到 ~250ms 的数据之间)。

我遇到的问题是图表上的最终间隔通常会缩短。例如,如果有 230ms 的数据,而图表有 50ms 的间隔,则最终间隔将在 30ms 后被截断,并且不会在 x 轴上显示完整的间隔。理想情况下,我希望它一直到 250 毫秒,并在 230 毫秒后停止显示数据(但扩展 x 轴范围以完全完成间隔)。

如果数据结束,是否有一个选项可以不缩短间隔?我什么都没找到。

标签: vb.netchartsintervals

解决方案


Just set the min and max explicitly

' make a test series, add points
Dim s As New Series()
For i = 0 To 230
    s.Points.Add(New DataPoint(i, i))
Next
' add series to chart
Chart1.Series.Add(s)
' set axis interval, min, and max
Chart1.ChartAreas(0).AxisX.Interval = 50
Chart1.ChartAreas(0).AxisX.Minimum = 0
Chart1.ChartAreas(0).AxisX.Maximum = 250

If you don't want to hard-code it, it can be done programatically

Chart1.ChartAreas(0).AxisX.Maximum = Math.Ceiling(maxValue / interval) * interval

If you don't want to set the interval, you can calculate it based on the max value. This is an example but you may want to tweak the ranges and values

Private Function getInterval(maxValue As Double) As Double
    Select Case maxValue
        Case 0 To 10
            Return 1
        Case 10 To 50
            Return 5
        Case 50 To 100
            Return 10
        Case 100 To 1000
            Return 50
        Case Else
            Return 100
    End Select
End Function

''' 

Dim maxValue = 33
' make a test series, add points
Dim s As New Series()
For i = 1 To maxValue
    s.Points.Add(New DataPoint(i, i))
Next
' add series to chart
Chart1.Series.Add(s)
Dim interval = getInterval(maxValue)
Chart1.ChartAreas(0).AxisX.Minimum = 0
Chart1.ChartAreas(0).AxisX.Maximum = Math.Ceiling(maxValue / interval) * interval


推荐阅读