Показывать только полные интервалы оси X VB.NET - PullRequest
0 голосов
/ 23 сентября 2019

Я использую библиотеку диаграмм .NET для отображения линейного графика (напряжение в зависимости от времени).Полная длина данных всегда варьируется (может быть от 10 мс до ~ 250 мс данных).

Проблема, с которой я сталкиваюсь, заключается в том, что последний интервал на графике обычно сокращается.Например, если есть данные 230 мс, а диаграмма имеет интервалы 50 мс, окончательный интервал будет обрезан через 30 мс и не будет отображать полный интервал на оси x.В идеале я хочу, чтобы он прошел весь путь до 250 мс и просто прекратил показывать данные через 230 мс (но расширил диапазон оси x, чтобы полностью завершить интервал).

Есть ли возможность где-то не сократить интервалыесли данные заканчиваются?Я не смог ничего найти.

1 Ответ

2 голосов
/ 23 сентября 2019

Просто установите минимальное и максимальное значения

' 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

Если вы не хотите жестко его кодировать, это можно сделать программно

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

Если вы этого не сделаетеЕсли вы хотите установить интервал, вы можете рассчитать его на основе максимального значения.Это пример, но вы можете настроить диапазоны и значения

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

...