LiveCharts CartesianChart 仅显示每个系列的单个值
LiveCharts CartesianChart only showing a single value from each series
我有一个非常简单的图表:X 轴是一系列日期时间(30 分钟间隔),Y 轴只是一个双精度数。有两个系列:MainSeries
和 CheckSeries
。
无论我做什么,图表都只会显示一个值:
这就是我构建图表的方式:
Dim MainSeries As New GColumnSeries With {
.Title = "Main",
.ColumnPadding = 1,
.Fill = New SolidColorBrush(Color.FromArgb(blue.A, blue.R, blue.G, blue.B)),
.Values = New GearedValues(Of Double)(MainValues)
}
Dim CheckSeries As New GColumnSeries With {
.Title = "Check",
.ColumnPadding = 1,
.Fill = New SolidColorBrush(Color.FromArgb(grey.A, grey.R, grey.G, grey.B)),
.Values = New GearedValues(Of Double)(CheckValues)
}
chtMain.Series = New SeriesCollection From {
MainSeries,
CheckSeries
}
chtMain.AxisX.Add(New Axis With {
.Title = "DateTime",
.Labels = LogDates,
.Unit = 1,
.MinRange = 48,
.MaxRange = 340
})
'Tried adding this to AxisX but doesn't make any difference
'.LabelFormatter = Function(value) New DateTime(CLng(value * TimeSpan.FromMinutes(30).Ticks)).ToString("t"),
chtMain.AxisY.Add(New Axis With {
.Title = "Consumption",
.LabelFormatter = Function(value) value.ToString("N"),
.MinValue = 0,
.MaxValue = yAxisMax + 10
})
在我的测试示例中,每个系列都有 289 个值。您还可以注意到,Y 轴最大值已针对不可见的其他数据进行了适当设置。否则我希望最大值在 50 左右。
我已经在 X 轴上尝试了 Unit
、MinRange
、MaxRange
的所有组合,并且它们的 none 没有任何区别。
有什么想法吗?
我最终找到了正确的属性组合。
AxisX.LabelFormatter
需要是一个以半小时为增量转换为 DateTime
的函数,但我还必须 MinValue
和 MaxValue
没有 MinRange
或 MaxRange
。 Range
属性似乎覆盖了 Value
属性。
所以我的 X 轴现在看起来像这样:
chtMain.AxisX.Add(New Axis With {
.Title = "DateTime",
.Labels = LogDates,
.LabelFormatter = Function(value) New DateTime(CLng(value)).ToString("dd/MM/yy HH:mm"),
.MinValue = 0,
.MaxValue = 48
})
我有一个非常简单的图表:X 轴是一系列日期时间(30 分钟间隔),Y 轴只是一个双精度数。有两个系列:MainSeries
和 CheckSeries
。
无论我做什么,图表都只会显示一个值:
这就是我构建图表的方式:
Dim MainSeries As New GColumnSeries With {
.Title = "Main",
.ColumnPadding = 1,
.Fill = New SolidColorBrush(Color.FromArgb(blue.A, blue.R, blue.G, blue.B)),
.Values = New GearedValues(Of Double)(MainValues)
}
Dim CheckSeries As New GColumnSeries With {
.Title = "Check",
.ColumnPadding = 1,
.Fill = New SolidColorBrush(Color.FromArgb(grey.A, grey.R, grey.G, grey.B)),
.Values = New GearedValues(Of Double)(CheckValues)
}
chtMain.Series = New SeriesCollection From {
MainSeries,
CheckSeries
}
chtMain.AxisX.Add(New Axis With {
.Title = "DateTime",
.Labels = LogDates,
.Unit = 1,
.MinRange = 48,
.MaxRange = 340
})
'Tried adding this to AxisX but doesn't make any difference
'.LabelFormatter = Function(value) New DateTime(CLng(value * TimeSpan.FromMinutes(30).Ticks)).ToString("t"),
chtMain.AxisY.Add(New Axis With {
.Title = "Consumption",
.LabelFormatter = Function(value) value.ToString("N"),
.MinValue = 0,
.MaxValue = yAxisMax + 10
})
在我的测试示例中,每个系列都有 289 个值。您还可以注意到,Y 轴最大值已针对不可见的其他数据进行了适当设置。否则我希望最大值在 50 左右。
我已经在 X 轴上尝试了 Unit
、MinRange
、MaxRange
的所有组合,并且它们的 none 没有任何区别。
有什么想法吗?
我最终找到了正确的属性组合。
AxisX.LabelFormatter
需要是一个以半小时为增量转换为 DateTime
的函数,但我还必须 MinValue
和 MaxValue
没有 MinRange
或 MaxRange
。 Range
属性似乎覆盖了 Value
属性。
所以我的 X 轴现在看起来像这样:
chtMain.AxisX.Add(New Axis With {
.Title = "DateTime",
.Labels = LogDates,
.LabelFormatter = Function(value) New DateTime(CLng(value)).ToString("dd/MM/yy HH:mm"),
.MinValue = 0,
.MaxValue = 48
})