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

Emil の回答を拡張するために、MSDN 情報にLegendItemOrderは次のように記載されています。

LegendItemOrder プロパティが Auto に設定されている場合、StackedColumn、StackedColumn100、StackedArea、または StackedArea100 チャート タイプが使用されている場合、凡例は自動的に反転されます。

確かではありませんが、s2 と s3 を「グループ化」し、s1 が StackedColumn チャートであるため、それらを逆に表示していると推測しs1, (s2, s3)ます(s2, s3), s1。(実際に裏で何が起きているかはわかりません)

Emil が言ったように、LegendItemOrderプロパティをLegendItemOrder.SameAsSeriesOrderorに設定するとLegendItemOrder.ReversedSeriesOrder、凡例が特定の順序で表示されるようになります。

さらに詳しい情報が記載されている MSDN へのリンクは次のとおりです

于 2010-09-24T19:33:36.747 に答える
3

それは確かに非常に奇妙に思えます。私には、凡例のシリーズの順序は、それらを追加する順序と同じである必要があるようです。または、インスタンスのLegendItemOrderプロパティを逆の順序で設定した場合です。LegendReversedSeriesOrder

于 2010-09-23T14:13:05.067 に答える
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 に答える