本文介绍了WPF工具包图表无序行系列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
默认LineSeries实现按独立值对数据点排序。这给出了像这样的数据的奇怪结果:
The default LineSeries implementation orders data points by independed value. This gives me strange results for data like this:
是否可以绘制一个线序列,其中在原始顺序的点之间绘制线?
Is it possible to plot a line series where lines are drawn between the points in the original order?
推荐答案
我目前通过继承LineSeries解决这个问题:
I currently solved this by inheriting from LineSeries:
class UnorderedLineSeries : LineSeries
{
protected override void UpdateShape()
{
double maximum = ActualDependentRangeAxis.GetPlotAreaCoordinate(
ActualDependentRangeAxis.Range.Maximum).Value;
Func<DataPoint, Point> PointCreator = dataPoint =>
new Point(
ActualIndependentAxis.GetPlotAreaCoordinate(
dataPoint.ActualIndependentValue).Value,
maximum - ActualDependentRangeAxis.GetPlotAreaCoordinate(
dataPoint.ActualDependentValue).Value);
IEnumerable<Point> points = Enumerable.Empty<Point>();
if (CanGraph(maximum))
{
// Original implementation performs ordering here
points = ActiveDataPoints.Select(PointCreator);
}
UpdateShapeFromPoints(points);
}
bool CanGraph(double value)
{
return !double.IsNaN(value) &&
!double.IsNegativeInfinity(value) &&
!double.IsPositiveInfinity(value) &&
!double.IsInfinity(value);
}
}
结果:
这篇关于WPF工具包图表无序行系列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!