C#_Chart でグラフ作成

コードで生成したデータをグラフに描画する。
タイトルや凡例、グラフの色の変更などは後で。

 

前提知識

Chart には Series というグラフ・データのコレクションがある。
グラフの種類やプロットする時はこのメソッドを使用する。
    コレクション:多数のオブジェクトを扱えるようにするメソッド。

 

Chart の設置

ツールボックスから [ Chart ] を選択し、Form または Panel に設置。

f:id:koshinRan:20170812113603j:plain ( クリックで拡大 )

 pictureBox に設置し、Chartが見えないと慌てていた。Chart は pictureBox と Panel の間にいた。
 pictureBox と Chart などの設置順による?
 pictureBox の上に Button 配置しようとしたら出来なかった。 後から試したら出来た。 よく分からん。

 

設置した既存の Series を用いてグラフを描く方法と、
ソースから Series を new する描き方がある。

 

既存の Series を用いての描き方。

1.グラフ種類の変更
  1. chart を選択。
  2. chart のプロパティ の [ グラフ ] 内にある Series をクリック。
  3. Series プロパティが立ち上がる。
  4. [ グラフ ] の ChartType から任意のグラフを選択し、OK。

↓ キャプチャ ( クリックで拡大 )

 2.                                                         4.

f:id:koshinRan:20170812114342j:plain           f:id:koshinRan:20170812114612j:plain

既存の Series は Series1 というオブジェクト名
メンバー(M): または [ データ ] Name 参照。
コード内でこの Series は、
chart1.Series[0] とアクセスできる。または chart1.Series["Series1"]

メンバー(M):において、追加をクリックすれば同じグラフ内に
別 Series を描画できる。
コード内で追加したこの Series は、
chart1.Series[1] とアクセスできる。または chart1.Series["Series2"] 。

Series[0]                                                追加した Series

f:id:koshinRan:20170812114904j:plain           f:id:koshinRan:20170812115411j:plain

 

2.ソースからプロット

デザインからもプロットできる。
Series プロパティにある [ データ ]内の Points をクリックし、
データを追加していけばプロットできるが、用途がないと思うので省略。

using System.Windows.Forms.DataVisualization.Charting; 必要。

    for (int i = 0; i < 10; ++i)
    {
        //chart1.Series["Series1"].Points.AddXY(i, i * 2 + 1);
        //または
        chart1.Series[0].Points.AddXY(i, i * 2 + 1);
    }

下記のグラフが描ける。

 

 f:id:koshinRan:20170812120559j:plain

 

ソースから Series を new しての描き方

既存の Series を使わない、または新たにプロットしたい時など。

using System.Windows.Forms.DataVisualization.Charting; 必要。

    Series addS = new Series();             //Series を new
    addS.ChartType = SeriesChartType.Line;  //グラフの種類を設定
    for (int i = 0; i < 10; ++i)                      //プロット
    {
        addS.Points.AddXY(i, i + 1);
    }
   
    chart1.Series.Add(addS);                //Series を chart1 に追加。

オレンジが追加したデータ。

 

f:id:koshinRan:20170812121029j:plain

 

複数グラフを描く場合

Series を追加していけばよい。

    //Series new
    Series addS = new Series();
    Series addSa = new Series();
    Series addSb = new Series();

    //プロット
    for (int i = 0; i < 10; ++i)
    {
        addS.Points.AddXY(i, i + 1);
        addSa.Points.AddXY(i, i -1);
        addSb.Points.AddXY(i, i);
    }
    //グラフの色
    addS.Color = Color.FromArgb(78, 187, 51);

    //グラフの種類
    addS.ChartType = SeriesChartType.Column;
    addSa.ChartType = SeriesChartType.Line;
    addSb.ChartType = SeriesChartType.Line;

    //凡例名
    addS.Name = "00";
    addSa.Name = "A";
    addSb.Name = "B";

    //chart に追加
    chart1.Series.Add(addS);
    chart1.Series.Add(addSa);
    chart1.Series.Add(addSb);

 

f:id:koshinRan:20170812131017j:plain

 

 なお、Chart 設置時の 既存 Series はメンバー(M): から削除できる。

 

こちらから。
http://mng.seedcollector.net/blog/?p=512
http://qiita.com/hart_edsf/items/013479474090a4e681f3
http://imagingsolution.net/program/csharp/chart_control_using/
https://www.ipentec.com/document/document.aspx?page=csharp-asp-net-change-chart-control-type
http://www.peko-step.com/tool/tfcolor.html
http://whoopsidaisies.hatenablog.com/entry/2013/11/26/030331

 

以上。