代码之家  ›  专栏  ›  技术社区  ›  Jeff Meatball Yang

MS图表控件:更改图例中系列的顺序

  •  4
  • Jeff Meatball Yang  · 技术社区  · 16 年前

    我的行系列出现在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。

    有什么想法吗?

    3 回复  |  直到 16 年前
        1
  •  3
  •   Emil Badh    15 年前

    这似乎真的很奇怪。在我看来,图例中序列的顺序应该与添加它们的顺序相同,或者如果设置 LegendItemOrder 你的财产 Legend 实例 ReversedSeriesOrder 以相反的顺序。

        2
  •  3
  •   Shawn    15 年前

    要详细介绍Emil的答案,请参阅以下MSDN信息: LegendItemOrder 说:

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

    我不确定,但我猜这是“分组”s2和s3,并以相反的方式显示它们,因为s1是一个堆叠的柱状图- s1, (s2, s3) (s2, s3), s1 . (我不知道幕后到底发生了什么)

    LegendItemOrder LegendItemOrder.SameAsSeriesOrder LegendItemOrder.ReversedSeriesOrder 应强制图例按特定顺序显示。

    http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.legend.legenditemorder.aspx

        3
  •  0
  •   lichengwu    13 年前
    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
    
    推荐文章