如何在图表中对齐索引系列

时间:2016-07-29 16:12:24

标签: c# winforms charts mschart series

通过将Series.IsXValueIndexed设置为Series,将true设置为索引时,图表需要将所有Series 对齐

  

如果您要显示多个系列且至少有一个系列使用   索引的X值,然后所有系列必须对齐 - 也就是说,有   相同数量的数据点 - 相应的点必须具有   相同的X值。

如何在Emtpy DataPoints的任何一个中添加必要的Series到缺少的广告位?

1 个答案:

答案 0 :(得分:1)

此例程首先收集Series集合中所有doubles的所有值。

然后它遍历所有Series和所有值,并插入缺少的空DataPoints

void AlignSeries(Chart chart)
{
    var allValues = chart.Series.SelectMany(s => s.Points)
                          .Select(x=>x.XValue).Distinct().ToList();
    foreach (Series series in chart.Series)
    {
        int px = 0;    //insertion index
        foreach(double d in allValues )
        {
            var p = series.Points.FirstOrDefault(x=> x.XValue == d);
            if (p == null)  // this value is missing
            {
                DataPoint dp = new DataPoint(d, double.NaN);
                dp.IsEmpty = true;
                series.Points.Insert(px, dp);
            }
            px++;
        }
    }
}

请注意,代码假定为..

  • 您的x值已正确设置,即它们已添加为numbersDateTimes。如果您将它们添加为strings,则它们都是0,并且索引没有任何意义。

  • 升序顺序添加了DataPoints。情况并非总是如此,尤其是在绘制LineCharts时。然而索引这些也没有任何意义。

另请注意,您可以通过设置源自Series.EmptyPointStyleDataPointCustomProperties中的属性,设置Empty DataPointsSeries的处理方式。

所以你可以这样设置Color

 someSeries.EmptyPointStyle.Color = Color.Red;