C#

C# 棒グラフを表示する(Chartコントロール)

前回Chartコントロールの「折れ線グラフ」を表示してみました。
次によく見かけるグラフに「棒グラフ」がありますので、表示してみます。

 

SeriesChartType.Barという値

グラフの表示方法を変えるには、Series(System.Windows.Forms.DataVisualization.Charting名前空間)クラスのChartTypeプロパティを設定します。

VisualStudioでC#の実装をしていると、メンバや列挙子の値の候補がリストで表示されます。
‘Series.ChartType = SeriesChartType.’まで入力すると候補が表示され、その中に”Bar”があります。

SeriesChartType.Barを指定したサンプルです。

private void Form1_Load(object sender, EventArgs e)
{
    // フォームをロードするときの処理
    chart1.Series.Clear();  // ← 最初からSeriesが1つあるのでクリアします
    chart1.ChartAreas.Clear();

    // ChartにChartAreaを追加します
    string chart_area1 = "Area1";
    chart1.ChartAreas.Add(new ChartArea(chart_area1));
    // ChartにSeriesを追加します
    string legend1 = "Graph1";
    chart1.Series.Add(legend1);
    // グラフの種別を指定
    chart1.Series[legend1].ChartType = SeriesChartType.Bar; // 棒グラフを指定してみます

    // データを用意します
    double[] y_values = new double[5] { 1.0, 1.2, 0.8, 1.8, 0.2 };

    // データをシリーズにセットします
    for (int i = 0; i < y_values.Length; i++)
    {
        chart1.Series[legend1].Points.AddY(y_values[i]);
    }
}

この”Bar”を指定すると、ちょっとイメージと違うグラフが表示されて困惑します。

SeriesChartType.Barを指定するとグラフは、このように表示されます。

 

たしかに「棒グラフ」を機械翻訳にかけると”Bar graph”とでるので、この’Bar’を指定したくなります。

英単語として”Bar”は、「横木」とか「突っ張り」(当然「酒場」の意味もあります)という意味のようで、ここで表示されているのは、たしかに「横向きの棒グラフ」です。

‘SeriesChartType.Bar’が横向きだとすると、縦の棒グラフは何を指定するの?となってしまいます。

 

Series.ChartTypeプロパティ

ChartTypeプロパティの型はSeriesChartTypeというenum(列挙子)です。
全部で35種類あるようです。

 

数値
名称
グラフの種類
0 Point ポイント グラフ
1 FastPoint FastPoint グラフ
2 Bubble バブル チャート
3 Line 折れ線グラフ
4 Spline スプライン グラフ
5 StepLine StepLine グラフ
6 FastLine FastLine グラフ
7 Bar 横棒グラフ
8 StackedBar 積み上げ横棒グラフ
9 StackedBar100 100% 積み上げ横棒グラフ
10 Column 縦棒グラフ
11 StackedColumn 積み上げ縦棒グラフ
12 StackedColumn100 100% 積み上げ縦棒グラフ
13 Area 面グラフ
14 SplineArea スプライン面グラフ
15 StackedArea 積み上げ面グラフ
16 StackedArea100 100% 積み上げ面グラフ
17 Pie 円グラフ
18 Doughnut ドーナツ グラフ
19 Stock 株価チャート
20 Candlestick ローソク足チャート
21 Range 範囲グラフ
22 SplineRange スプライン範囲グラフ
23 RangeBar RangeBar グラフ
24 RangeColumn 範囲縦棒グラフ
25 Radar レーダー チャート
26 Polar 極座標グラフ
27 ErrorBar 誤差範囲グラフ
28 BoxPlot ボックス プロット グラフ
29 Renko 練行足チャート
30 ThreeLineBreak ThreeLineBreak グラフ
31 Kagi かぎ足チャート
32 PointAndFigure PointAndFigure グラフ
33 Funnel じょうごグラフ
34 Pyramid ピラミッド グラフ

 

たしかに、”Bar”は「横棒」のようです。「縦棒」は”Column”のようですので先ほどのコードのChartTypeの指定を変更してみます。

サンプルコードです。

 

private void Form1_Load(object sender, EventArgs e)
{
    // フォームをロードするときの処理
    chart1.Series.Clear();  // ← 最初からSeriesが1つあるのでクリアします
    chart1.ChartAreas.Clear();

    // ChartにChartAreaを追加します
    string chart_area1 = "Area1";
    chart1.ChartAreas.Add(new ChartArea(chart_area1));
    // ChartにSeriesを追加します
    string legend1 = "Graph1";
    chart1.Series.Add(legend1);
    // グラフの種別を指定
    chart1.Series[legend1].ChartType = SeriesChartType.Column; // 棒グラフを指定してみます

    // データを用意します
    double[] y_values = new double[5] { 1.0, 1.2, 0.8, 1.8, 0.2 };

    // データをシリーズにセットします
    for (int i = 0; i < y_values.Length; i++)
    {
        chart1.Series[legend1].Points.AddY(y_values[i]);
    }
}

 

こちらのコードを実行すると下図のように表示されます。

 

よく見る棒グラフになりました。

 

 

タイトルとURLをコピーしました