通过将Series.IsXValueIndexed
设置为Series
,将true
设置为索引时,图表需要将所有Series
对齐:
如果您要显示多个系列且至少有一个系列使用 索引的X值,然后所有系列必须对齐 - 也就是说,有 相同数量的数据点 - 相应的点必须具有 相同的X值。
如何在Emtpy DataPoints
的任何一个中添加必要的Series
到缺少的广告位?
答案 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值已正确设置,即它们已添加为numbers
或DateTimes
。如果您将它们添加为strings
,则它们都是0
,并且索引没有任何意义。
以升序顺序添加了DataPoints
。情况并非总是如此,尤其是在绘制LineCharts
时。然而索引这些也没有任何意义。
另请注意,您可以通过设置源自Series.EmptyPointStyle
的DataPointCustomProperties
中的属性,设置Empty DataPoints
中Series
的处理方式。
所以你可以这样设置Color
:
someSeries.EmptyPointStyle.Color = Color.Red;