C#图表 - 具有不同Y值的两个图表区域

时间:2017-08-07 19:23:52

标签: c# charts datagridview

美好的一天编程,

我有一个问题。我创建了一个代码,用datagridview作为数据源创建图表,并使用chartarea1。

Chart chart1 = new Chart();
        chart1.Size = new System.Drawing.Size(1024, 768);


        ChartArea chartArea1 = new ChartArea();
        chartArea1.AxisX.MajorGrid.LineColor = Color.LightGray;
        chartArea1.AxisY.MajorGrid.LineColor = Color.LightGray;
        chartArea1.AxisX.LabelStyle.Font = new Font("Consolas", 8);
        chartArea1.AxisY.LabelStyle.Font = new Font("Consolas", 8);
        chartArea1.AxisX.IntervalType = DateTimeIntervalType.Months;
        chartArea1.AxisX.Interval = 1;
        chart1.ChartAreas.Add(chartArea1);



        chart1.Series.Add(new Series());

        chart1.Series[0].XValueMember = dataGridView1.Columns[0].DataPropertyName;
        chart1.Series[0].YValueMembers = dataGridView1.Columns[1].DataPropertyName;
        chart1.DataSource = dataGridView1.DataSource;

        chart1.Series[0].ChartType = SeriesChartType.Line;

现在我想在chart1中使用相同的XValueMember创建第二个图表区,但是从不同的datagridview创建不同的YValueMember,例如datagridview2。有可能吗?

提前致谢。

好的,我试过这个:

            Chart chart1 = new Chart();
        ChartArea chartArea1 = new ChartArea();
        Series series1 = new Series();
        chart1.DataSource = dataGridView1.DataSource;

        chartArea1 = chart1.ChartAreas.Add("ca1");
        chartArea1.AxisX.MajorGrid.LineColor = Color.LightGray;
        chartArea1.AxisY.MajorGrid.LineColor = Color.LightGray;
        chartArea1.AxisX.LabelStyle.Font = new Font("Consolas", 8);
        chartArea1.AxisY.LabelStyle.Font = new Font("Consolas", 8);
        chartArea1.AxisX.IntervalType = DateTimeIntervalType.Months;
        chartArea1.AxisX.Interval = 1;

        series1 = chart1.Series.Add("s1");

        series1.Points.DataBindXY(dataGridView1.Columns[0].DataPropertyName, dataGridView1.Columns[1].DataPropertyName);

        series1.ChartType = SeriesChartType.Line;

        chart1.SaveImage("chart.png", ChartImageFormat.Png);

现在收到此错误:

Y值不能是绑定到字符串对象的数据。 参数名称:yValues

1 个答案:

答案 0 :(得分:0)

您不应该绑定到整个Chart,而应绑定到Series.Points

有很多方法可以使用Chart DataBinding

您还应该控制每个NameSeries的{​​{1}};当您想要/需要关联第二个系列与第二个图表区时,这很重要。

添加ChartAreasChartArea的首选/推荐方式如下:

Series

关联是这样完成的:

chartArea1 = chart1.ChartAreas.Add("ca1"); // or any other, more useful name

Series series1 = chart1.Series.Add("s1");  // dito

仅绑定一个系列使用..

series1.ChartArea  = "ca1";   // note the string!!

..或顶部链接表中的其他一些重载。