バブル チャートは、ポイントグラフのバリエーションの 1 つです。データ ポイントはさまざまなサイズのバブルで置き換えられます。
ポイントグラフとの違い
バブルチャートが、ポイントグラフと違うところは「点の大きさをデータとして持っている」というところにあります。
これは、3次元グラフなどにあるZ軸のようなものです。
Chartコントロールでの表現方法
点の大きさ(Z軸)を表すためには、XYを持つ1点のデータにさらにデータを追加しなければいけません。
Chartコントロールでの「点1つのデータ」はDataPointクラスが持っています。
DataPointクラスのコンストラクタはオーバーロードがあり
1. XとYを1つずつ引数に取るコンストラクタ
public DataPoint(double xValue, double yValue);
2. Xと「Yの配列」を引数に取るコンストラクタ
public DataPoint(double xValue, double[] yValues);
があり、バブルチャートではこの”2.”のほうのコンストラクタを使用します。
引数のイメージは
| X | X方向の値 |
| Y[0] | Y方向の値 |
| Y[1] | Z方向の値(バブルチャートの場合、点の大きさ) |
となります。
サンプルは下記のようになります。
private void frmMain_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.Bubble; // ポイントグラフを指定
//chart1.Series[legend1].MarkerSize = 20; // マークサイズを指定
chart1.Series[legend1].MarkerStyle = MarkerStyle.Circle; // マークスタイル(形状)を指定
// データを用意します
double[] x_values = new double[5] { 1.0, 0.8, 1.8, 0.2, 1.2 };
double[] y_values = new double[5] { 1.0, 1.2, 0.8, 1.8, 0.2 };
double[] bubble_values = new double[5] { 10.0, 1.2, 80.8, 15.8, 5.2 }; // バブルチャートのZ軸(ポイントの大きさを決めるデータ)
// データをシリーズにセットします
for (int i = 0; i < y_values.Length; i++)
{
//DataPoint dp = new DataPoint((double)x_values[i], y_values[i]);
double[] y_vals = new double[2] { y_values[i], bubble_values[i] };
DataPoint dp = new DataPoint((double)x_values[i], y_vals);
chart1.Series[legend1].Points.Add(dp);
}
}
このコードを実行すると、下図のようなグラフが表示されます。

基本的なバブルチャートでは、MarkStyle.Circleですが、ポイントグラフで紹介したようにSeriesのMarkStyleプロパティを設定するとそれぞれの形でバブルチャートを表示することもできます。

