如何对齐图表中的索引系列
How to align indexed Series in a Chart
当通过将 Series.IsXValueIndexed
设置为 true
将 Series
设置为 索引 时,图表需要所有 Series
对齐:
If you are displaying multiple series and at least one series uses
indexed X-values, then all series must be aligned — that is, have the
same number of data points—and the corresponding points must have the
same X-values.
如何将必要的 Emtpy DataPoints
添加到 Series
中缺少的位置?
此例程首先收集 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 值设置正确,即它们被添加为 numbers
或 DateTimes
。如果您将它们添加为 strings
,它们都是 0
并且索引没有任何意义。
DataPoints
是按 升序 添加的。情况并非总是如此,尤其是在绘制 LineCharts
时。然而索引这些也没有意义。
另请注意,您可以通过设置 Series.EmptyPointStyle
, which is derived from DataPointCustomProperties
.
中的属性来设置如何处理 Series
中的 Empty DataPoints
的几个选项
所以你可以这样设置他们的Color
:
someSeries.EmptyPointStyle.Color = Color.Red;
当通过将 Series.IsXValueIndexed
设置为 true
将 Series
设置为 索引 时,图表需要所有 Series
对齐:
If you are displaying multiple series and at least one series uses indexed X-values, then all series must be aligned — that is, have the same number of data points—and the corresponding points must have the same X-values.
如何将必要的 Emtpy DataPoints
添加到 Series
中缺少的位置?
此例程首先收集 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 值设置正确,即它们被添加为
numbers
或DateTimes
。如果您将它们添加为strings
,它们都是0
并且索引没有任何意义。DataPoints
是按 升序 添加的。情况并非总是如此,尤其是在绘制LineCharts
时。然而索引这些也没有意义。
另请注意,您可以通过设置 Series.EmptyPointStyle
, which is derived from DataPointCustomProperties
.
Series
中的 Empty DataPoints
的几个选项
所以你可以这样设置他们的Color
:
someSeries.EmptyPointStyle.Color = Color.Red;