将图例添加到Winforms点图

时间:2018-08-22 03:56:15

标签: c# winforms charts

我正在使用C#构建Winform点图,其中数据来自数据表。我已经创建了这样的点:

chart1.Series.Add("series1");
chart1.Series["series1"].ChartType = SeriesChartType.Point;
chart1.Series["series1"].YValueMembers = "VALUE";
chart1.Series["series1"].XValueMember = "DATE";
chart1.DataSource = dt;

我希望能够基于数据表dt中称为产品的第三列,使用不同的颜色/符号来绘制图表上各点的图例。我已经尝试了很多方法来完成此操作,但是没有任何效果。我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用我从msdn page获得的代码

// Create a new legend called "Legend2".
chart1.Legends.Add(new Legend("Legend2"));

// Set Docking of the Legend chart to the Default Chart Area.
chart1.Legends["Legend2"].DockToChartArea = "Default"; 

// Assign the legend to Series1.
chart1.Series["Series1"].Legend = "Legend2";
chart1.Series["Series1"].IsVisibleInLegend = true;

答案 1 :(得分:0)

我的问题的一部分是首先了解如何首先构建图表。我意识到我需要为数据表中的每个独特产品创建一个系列并将其添加到图表中。我首先在数据表中列出了独特的产品列表:

        List<string> products = new List<string>();
        foreach (DataRow row in dt.Rows)
        {
            if (!products.Contains(row["product"].ToString()))
            {
                products.Add(row["product"].ToString());
            }
        }

然后

       foreach (string product in products)
        {
            string seriesName = product;
            chart1.Series.Add(seriesName);
            DataTable dtprod = new DataTable();
            dtprod = dt.Select("product= '" + product + "'").CopyToDataTable();
            chart1.Series[seriesName].ChartType = SeriesChartType.Point;
            chart1.Series[seriesName].YValueMembers = "VALUE";
            chart1.Series[seriesName].XValueMember = "DATE";
            chart1.Series[seriesName].Points.DataBindXY(dtprod.Rows,"DATE", dtprod.Rows, "VALUE");
            chart1.Series[seriesName].XValueType = ChartValueType.DateTime;
            chart1.Series[seriesName].MarkerSize = 10;
        }

这会为每个产品生成一个带有唯一标记的点图。感谢您的回答!