5

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

我的 Line 系列出现在 StackedColumn 系列之前,但在我的 Column 系列之后。

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。

有任何想法吗?

4

3 回答 3

3

这确实看起来很奇怪。在我看来,图例中系列的顺序应该与添加它们的顺序相同,或者如果您将实例的LegendItemOrder属性设置为相反的顺序。LegendReversedSeriesOrder

于 2010-09-23T14:13:05.067 回答
3

为了扩展 Emil 的答案,MSDN 信息为LegendItemOrder

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

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

正如 Emil 所说,将LegendItemOrder属性设置为LegendItemOrder.SameAsSeriesOrderorLegendItemOrder.ReversedSeriesOrder应该强制图例以特定顺序显示。

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

于 2010-09-24T19:33:36.747 回答
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
于 2013-02-17T04:51:59.923 回答