MS Chart Control:更改图例中的系列顺序

时间:2009-12-16 21:15:08

标签: mschart

如何更改图例中的系列顺序?

My Line系列出现在StackedColumn系列之前,但出现在我的专栏系列之后。

Chart c = new Chart();
ChartArea ca = c.ChartAreas.Add("main");
Legend lg = c.Legends.Add("mainLegend");
Series s1 = c.Series.Add("s1");
s1.ChartType = ChartType.StackedColumn;
Series s2 = c.Series.Add("s2");
s2.ChartType = ChartType.Column;
Series s3 = c.Series.Add("s3");
s3.ChartType = ChartType.Line;

原谅可怜的ASCII艺术,但传说看起来像:

  

....... [黄色] s2 ....... [红色] s3 ...... [蓝色] s1 ............

当我希望它按顺序排列时:s1,s2,s3。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这确实很奇怪。对我而言,图例中系列的顺序似乎应与添加它们的顺序相同,或者如果将LegendItemOrder实例的Legend属性设置为{{1}以相反的顺序。

答案 1 :(得分:2)

要扩展Emil的答案,LegendItemOrder的MSDN信息说:

如果LegendItemOrder属性设置为Auto,则使用StackedColumn,StackedColumn100,StackedArea或StackedArea100图表类型时,图例将自动反转。

我不确定,但我的猜测是它正在“分组”s2和s3,并反过来显示它们,因为s1是StackedColumn图表 - s1, (s2, s3)变为(s2, s3), s1。 (我不知道幕后究竟发生了什么)

正如Emil所说,将LegendItemOrder属性设置为LegendItemOrder.SameAsSeriesOrderLegendItemOrder.ReversedSeriesOrder会强制图例按特定顺序显示。

以下是MSDN的链接,其中包含更多信息: http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.legend.legenditemorder.aspx

答案 2 :(得分:0)

MSChart1.ShowLegend = True
With MSChart1
  .Column = 1
  .Row = 1
  .ColumnLabel = "Series 1"
  .Data = 100
  .Column = 2
  .Row = 1
  .ColumnLabel = "Series 2"
  .Data = 100
End With