C#でグラフを描く(Chartコントロールによる方法)

Chartコントロールの追加

Visual StudioのChartコントロールを使う.

Windows フォームアプリケーションを作成し,Chartコントロールを配置する.Chartコントロールはツールボックスの「データ」カテゴリの中にある.
f:id:whoopsidaisies:20131126021006p:plain

ソースコード

sin波とcos波を描画するサンプル.

private void PlotSinCos()
{
    // 1.Seriesの追加
    chart1.Series.Clear();
    chart1.Series.Add("sin");
    chart1.Series.Add("cos");

    // 2.グラフのタイプの設定
    chart1.Series["sin"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
    chart1.Series["cos"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;

    // 3.座標の入力
    for (double theta = 0.0; theta <= 2 * Math.PI; theta += Math.PI / 360)
    {
        chart1.Series["sin"].Points.AddXY(theta, Math.Sin(theta));
        chart1.Series["cos"].Points.AddXY(theta, Math.Cos(theta));
    }
}
1.Seriesの追加

グラフ1系列はSystem.Windows.Forms.DataVisualization.Charting.Seriesクラスのオブジェクトで管理される.Seriesオブジェクトにはグラフの座標データや,グラフの種類,色等々が格納されている.

Seriesクラスのオブジェクトは,SeriesCollectionクラスのオブジェクトであるChart.Seriesプロパティに格納されている.Chart.Seriesプロパティはコレクションと呼ばれる配列のようなものになっている.

まず,

chart1.Series.Clear();

で,コレクションをクリアする.そして,AddメソッドによってSeriesクラスのオブジェクトをコレクションに追加する.その際オブジェクトの名前指定できる.

2.グラフのタイプの設定

次に,

chart1.Series["sin"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
chart1.Series["cos"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;

によって,グラフの種類を指定する.

コレクション内のSeriesオブジェクトには,オブジェクト追加時に指定した名前または番号指定によりアクセスできる.

Series.ChartTypeプロパティを設定することでグラフの種類を指定することができる.指定可能なグラフの種類については以下を参照.
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datavisualization.charting.seriescharttype(v=vs.110).aspx

3.座標の入力

最後にグラフの座標を入力する.座標データはDataPointCollection型のSeries.Pointsプロパティで管理されている.

AddXYメソッドにより,グラフのX座標とY座標を指定してデータを追加できる.

for (double theta = 0.0; theta <= 2 * Math.PI; theta += Math.PI / 360)
{
    chart1.Series["sin"].Points.AddXY(theta, Math.Sin(theta));
    chart1.Series["cos"].Points.AddXY(theta, Math.Cos(theta));
}

結果

以下のようにsin波とcos波が表示されれば成功.
f:id:whoopsidaisies:20131126021645p:plain