在Box Plot Chart中,如何将平均点设置为菱形而不是标准线形

时间:2015-10-12 01:52:19

标签: c# charts

有谁知道如何将箱形图的平均点设置为菱形而不是普通线形?

这是我想要实现的输出:

我在网上研究了很长一段时间,发现了一些属性,如点标记和标记样式,但仍然无法得到我想要的输出...

这是我的最新代码:

    Chart Chart1= new Chart();
    Chart1.DataSource = dt;
    Chart1.Width = 800;
    Chart1.Height = 490;

    Chart1.Series.Add(new Series());
    Chart1.Series[0].ChartType = SeriesChartType.BoxPlot;
    **Chart1.Series.Add(new Series());
    Chart1.Series[1].ChartType = SeriesChartType.Point;**

    List<object> List1 = dt.AsEnumerable().ToList<object>();

    foreach (DataRow row in dt.Rows)
    {    
        Chart1.Series[0].Points.AddXY(row["CUSTOMER"],
            new object[] { row["MIN"], row["MAX"], row["25TH_PERCENTILE"],
                           row["75TH_PERCENTILE"], row["AVG"], row["50TH_PERCENTILE"] });

        Chart1.Series[1].Points.AddXY(row["CUSTOMER"],
            new object[] { row["AVG"]});
    }

    Chart1.Series[0]["BoxPlotShowAverage"] = "false";

    //create chartareas
    ChartArea ca= new ChartArea();
    ca.AxisX = new Axis();
    ca.AxisY = new Axis();

    //databind
    Chart1.DataBind();
    Chart1.Visible = true;

这是我得到的输出: enter image description here

现在面对的问题:图表中每个系列的平均值相同,即使DataTable(dt)的每一行都有不同的平均值。

1 个答案:

答案 0 :(得分:2)

根据MSDN - Box Plot Chart

  

图表特征:   支持标记:否

一种 hacky 这样做的方法是隐藏&#34; Avg&#34;从盒子图表中做:

 Chart1.Series[0]["BoxPlotShowAverage"] = "false";

然后添加一个单独的Point Series,其中包含平均值:

 Chart1.Series[1].Points.AddXY(row["Customer"], new object[] { row["Avg"] });

您将获得类似于您正在寻找的内容:

enter image description here