9

しばらくの間、MSChart を使用してチャートを生成してきましたが、1 つのチャート オブジェクト内に複数のチャートを作成したことはありません。このタスクについて考えてみると、私の知識のギャップが明らかになりました。

チャート作成の考え方

  1. チャート オブジェクトの作成
  2. ChartArea オブジェクトを Chart オブジェクトに追加する
  3. シリーズを作成してデータを追加する
  4. シリーズをチャートに追加

オブジェクト構造は最終的にこのようになります

                 Chart
               /       \
          ChartArea   Series

私が過去に懸念していた限りでは、ChartArea は単に私がラベルを設定した領域であり、そのようなものです。別のものを追加するには、別の ChartArea と 1 つ以上のシリーズを追加したいと考えています。

           ___________________ Chart ___________________
          /                  /       \                  \
       ChartArea0      ChartArea1   Series0            Series1

Series0 を ChartArea0 に関連付けるにはどうすればよいですか? Series を ChartArea に追加することは理にかなっていますが、それは不可能です。Series を ChartArea ではなく、Chart に関連付けるとどのような利点がありますか?

4

3 に答える 3

5

チャートは複数のエリアに分割でき、1 つのエリアを棒グラフにすることができ、他のエリアを円グラフにすることができます。

System.Windows.Forms.DataVisualization.Charting.Chart chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart(); System.Windows.Forms.DataVisualization.Charting.ChartArea chartarea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); System.Windows.Forms.DataVisualization.Charting.ChartArea chartarea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); chart1.ChartAreas.Clear(); chart1.ChartAreas.Add(chartarea1); chart1.ChartAreas.Add(chartarea2);

次に、いくつかのシリーズを作成します。各シリーズはチャート エリアに関連付けられます。5 つのシリーズを作成し、series1、series2、および series3 を chartarea1 に関連付ける場合、それらのシリーズは同じまたは互換性のあるチャート タイプである必要があります。そうしないと、ランタイム エラーが発生します。同じチャート エリア内の複数の系列の x 軸コンポーネントが異なる場合があります。たとえば、次のコードでは、series1 には 3 つのデータ ポイントがあり、series2 には 5 つのデータ ポイントがあります。

chart1.Series.Clear(); chart1.Series.Add("Series1"); chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column; chart1.Series[0].ChartArea = chart1.ChartAreas[0].Name;

        chart1.Series[0].Points.AddXY("Point1", 20);
        chart1.Series[0].Points.AddXY("Point2", 50);
        chart1.Series[0].Points.AddXY("Point3",30);


        chart1.Series.Add("Series2");
        chart1.Series[1].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
        chart1.Series[1].ChartArea = chart1.ChartAreas[0].Name;
        chart1.Series[1].Points.AddXY("newname1", 10);
        chart1.Series[1].Points.AddXY("newname2", 20);
        chart1.Series[1].Points.AddXY("newname3", 30);
        chart1.Series[1].Points.AddXY("newname4", 40);
        chart1.Series[1].Points.AddXY("newname5", 50);

        this.tabPage3.Controls.Add(chart1);
        chart1.Dock = System.Windows.Forms.DockStyle.Fill;

于 2013-12-26T13:17:07.110 に答える