2017-08-07 13 views
0

プログラミングの良い日nobblesC#charting - 異なるY値を持つ2つのグラフ領域

私は質問があります。 chartarea1でデータソースとしてdatagridviewを使用してグラフを作成するコードを作成しました。

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; 

は、今私は、例えばdatagridview2のために、異なるDataGridViewのから同じXValueMemberが異なるYValueMemberとグラフ1内の第2のChartAreaを作成したいです。それは可能ですか?

ありがとうございます。


[OK]を、ので、私はこれを試してみました:

  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値は、文字列オブジェクトにバインドされたデータにすることはできません。 パラメータ名:y値

答えて

0

Chartにはバインドしないでください。Series.Points

ます。また、各SeriesNameを制御し、ChartAreasでなければならないChart DataBinding

を使用する多くの方法があります。あなたが欲しい/ときにこの問題は第2シリーズと第2のグラフエリアを関連付けます。

ChartAreaまたは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!! 

は一シリーズの使用をバインドするには...

series1.Points.DataBindXY() 

..または、linのテーブルからの他のオーバーロードkの上に。

関連する問題