我正在尝试做一些我认为应该很容易的事情。 我想显示均匀分布的1到30值,因为我进行了代表30分钟数据的数据运行。有时有500个数据点,但有时又有数千个(尽管我可以轻松确定点数)。
基本上,我在Xaxis上的代码如下所示,但它没有满足我的要求。代码下面是正在发生的情况的屏幕截图,下面是我想要的屏幕截图。
cartChart.AxisX.Add(new Axis
{
// TODO fix this to acutally show real time
Title = "Minutes",
//Labels= { "1", "2", "4", "6", "8", "10", "12", "14", "16", "18", "20", "22", "24", "26", "28", "30" },
Separator = new LiveCharts.Wpf.Separator
{
Step = listOfChartValues[i].Count / 30 > 0 ? listOfChartValues[i].Count / 30 : 1, // this is making the assumtion that data arrivals follow uniform distribution
IsEnabled = false
}
});
当前的错误图表(试图为每个数据点贴上分钟标签) 只需要30分钟的标签(也许我的算法计算步骤需要调整,目前我将数据点总数除以30) 我看了这两篇文章,但这是一个不同的问题 LiveChart doesn't show all Labels on x-axis WPF
答案 0 :(得分:1)
问题在于,实时图表为每个点标签生成,并且标签数必须是点数。有两种解决方法。
首先,您更改ChartValues<double> to ChartValues<ObservablePoint>
chart.Series = new LiveCharts.SeriesCollection()
{
new LineSeries()
{
Title = "Some series",
Values = new ChartValues<ObservablePoint>
{
new ObservablePoint(1,5),
new ObservablePoint(1.5,7.6),
new ObservablePoint(2,21),
new ObservablePoint(5,25),
new ObservablePoint(10,30),
new ObservablePoint(17,30),
new ObservablePoint(19.6,30),
new ObservablePoint(30,40),
}
}
};
chart.AxisX = new LiveCharts.Wpf.AxesCollection()
{
new LiveCharts.Wpf.Axis()
{
Title= "Minutes",
Separator = new LiveCharts.Wpf.Separator()
{
Step = 1.0,
IsEnabled = false
}
}
};
请注意,在可观察点中,您指定了X和Y。点之间的距离可能不同(不规则间隔)
第二种解决方案可能是通过以下方式定义了标签数组,因此您使标签数组与点数一样大,但是您声明只有30个项目,其余项目为空。
chart.AxisX.First().Labels = new List<string>() { "1", "","2","","","3",.... "30" };