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



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

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

如何在任何Series中将必要的Emtpy DataPoints添加到它们缺少的插槽中?

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

然后它遍历所有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.EmptyPointStyle 中设置属性来设置多个选项,以处理Series中的Empty DataPoints,该属性派生自 DataPointCustomProperties

因此,您可以像这样设置他们的Color

 someSeries.EmptyPointStyle.Color = Color.Red;

最新更新