前回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]);
}
}
こちらのコードを実行すると下図のように表示されます。

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

