[Chart][Tips] コードから折れ線グラフを作成する

今回はコードから折れ線グラフを作成する例を紹介します。

といっても前回の「コードから棒グラフを作成する」で紹介したコードの一部を変更するだけです。

グラフを折れ線にするにはChartTypeプロパティSeriesChartType.Lineを指定します。

下記は、コードから折れ線グラフを作成する例です。

データとしてアクセス数を表示しています。

VBの例

Imports System.Windows.Forms.DataVisualization.Charting

' フォームロード時の処理
Private Sub Form4_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    '初期化
    Chart1.Series.Clear()

    'データの取得
    Dim ds As DataSet = GetData()

    'Chartコントロールにデータソースを設定
    Chart1.DataSource = ds

    'Chartコントロールにタイトルを設定
    Chart1.Titles.Add("アクセス数とユニークユーザー数")

    'グラフの種類,系列,軸の設定
    For I As Integer = 1 To ds.Tables(0).Columns.Count - 1
        '列名の取得
        Dim columnName As String = ds.Tables(0).Columns(I).ColumnName

        '系列の設定
        Chart1.Series.Add(columnName)

        '★★★グラフの種類を折れ線グラフにする★★★
        Chart1.Series(columnName).ChartType = SeriesChartType.Line

        'X軸
        Chart1.Series(columnName).XValueMember = ds.Tables(0).Columns(0).ColumnName.ToString
        Chart1.ChartAreas(0).AxisX.MajorGrid.Enabled = False
        Chart1.ChartAreas(0).AxisX.MinorGrid.Enabled = False

        'Y軸
        Chart1.Series(columnName).YValueMembers = columnName
    Next

    'X軸タイトル
    Chart1.ChartAreas(0).AxisX.Title = "月"

    Chart1.DataBind()
End Sub

' データの設定
Private Function GetData() As DataSet
    Dim ds As New DataSet
    Dim dt As New DataTable
    Dim dtRow As DataRow

    '列の作成
    dt.Columns.Add("月", Type.GetType("System.String"))
    dt.Columns.Add("アクセス数", Type.GetType("System.Int32"))
    ds.Tables.Add(dt)

    'データの追加
    dtRow = ds.Tables(0).NewRow
    dtRow(0) = "2011/01"
    dtRow(1) = "945"
    ds.Tables(0).Rows.Add(dtRow)

    dtRow = ds.Tables(0).NewRow
    dtRow(0) = "2011/02"
    dtRow(1) = "1023"
    ds.Tables(0).Rows.Add(dtRow)

    dtRow = ds.Tables(0).NewRow
    dtRow(0) = "2011/03"
    dtRow(1) = "2121"
    ds.Tables(0).Rows.Add(dtRow)

    dtRow = ds.Tables(0).NewRow
    dtRow(0) = "2011/04"
    dtRow(1) = "2179"
    ds.Tables(0).Rows.Add(dtRow)

    dtRow = ds.Tables(0).NewRow
    dtRow(0) = "2011/05"
    dtRow(1) = "2063"
    ds.Tables(0).Rows.Add(dtRow)

    dtRow = ds.Tables(0).NewRow
    dtRow(0) = "2011/06"
    dtRow(1) = "2107"
    ds.Tables(0).Rows.Add(dtRow)

    Return (ds)
End Function

C#の例

using System.Windows.Forms.DataVisualization.Charting;

// フォームロード時の処理
private void Form4_Load(object sender, EventArgs e)
{
    // 初期化
    chart1.Series.Clear();

    // データの取得
    DataSet ds = GetData();

    // Chartコントロールにデータソースを設定
    chart1.DataSource = ds;

    // Chartコントロールにタイトルを設定
    chart1.Titles.Add("アクセス数とユニークユーザー数");

    // グラフの種類,系列,軸の設定
    for (int i = 1; i < ds.Tables[0].Columns.Count; i++)
    {
        // 列名の取得
        string columnName = ds.Tables[0].Columns[i].ColumnName;

        // 系列の設定
        chart1.Series.Add(columnName);

        // ★★★グラフの種類を折れ線グラフにする★★★
        chart1.Series[columnName].ChartType = SeriesChartType.Line;

        // X軸
        chart1.Series[columnName].XValueMember = ds.Tables[0].Columns[0].ColumnName.ToString();
        chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
        chart1.ChartAreas[0].AxisX.MinorGrid.Enabled = false;

        // Y軸
        chart1.Series[columnName].YValueMembers = columnName;
    }

    // X軸タイトル
    chart1.ChartAreas[0].AxisX.Title = "月";

    chart1.DataBind();
}

// データの設定
private DataSet GetData()
{
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    DataRow dtRow;

    // 列の作成
    dt.Columns.Add("月", Type.GetType("System.String"));
    dt.Columns.Add("アクセス数", Type.GetType("System.Int32"));
    dt.Columns.Add("ユニークユーザー数", Type.GetType("System.Int32"));
    ds.Tables.Add(dt);

    // データの追加
    dtRow = ds.Tables[0].NewRow();
    dtRow[0] = "2011/01";
    dtRow[1] = "945";
    ds.Tables[0].Rows.Add(dtRow);

    dtRow = ds.Tables[0].NewRow();
    dtRow[0] = "2011/02";
    dtRow[1] = "1023";
    ds.Tables[0].Rows.Add(dtRow);

    dtRow = ds.Tables[0].NewRow();
    dtRow[0] = "2011/03";
    dtRow[1] = "2121";
    ds.Tables[0].Rows.Add(dtRow);

    dtRow = ds.Tables[0].NewRow();
    dtRow[0] = "2011/04";
    dtRow[1] = "2179";
    ds.Tables[0].Rows.Add(dtRow);

    dtRow = ds.Tables[0].NewRow();
    dtRow[0] = "2011/05";
    dtRow[1] = "2063";
    ds.Tables[0].Rows.Add(dtRow);

    dtRow = ds.Tables[0].NewRow();
    dtRow[0] = "2011/06";
    dtRow[1] = "2107";
    ds.Tables[0].Rows.Add(dtRow);

    return ds;
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です