今回は散布図グラフを作成する方法をご説明します。
散布図グラフを作成する基本的な方法から、詳細設定まで併せてご説明します。
その他のグラフ作成方法や、グラフの詳細設定は次の記事をご覧ください。
- グラフ操作 グラフの作成と詳細設定をする方法
- 折れ線グラフを作成する
- 棒グラフを作成する
- 円グラフを作成する
- 複合グラフを作成する
- 2軸グラフを作成する
- 複合グラフに2軸設定する方法
- 作成済みのグラフのデータ範囲を変更する
- シートに作成済みの埋め込みグラフを取得する
一番最後にまとめたサンプルコードを記載しています。
1.散布図とは
散布図は、縦軸、横軸に2項目の量や大きさ等を対応させ、データを点でプロットしたものです。
分布図ともいいます。 各データは2項目の量や大きさ等を持ったものです。
「二つの特性を横軸と縦軸とし,観測値を打点して作るグラフ表示」と定義しています。
2.散布図グラフを作成する
もっともシンプルに散布図グラフを作成する方法は次のように記述します。
散布図グラフを作成するには「Chart」オブジェクトの「ChartType」を「xlXYScatter」と指定します。
また、「SetSourceData」でデータ範囲を指定しています。
Sub Sample1()
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlXYScatter
.SetSourceData Range(Cells(1, 1), Cells(13, 5))
End With
End Sub
3.散布図グラフの種類
散布図グラフの種類はいくつかあります。
グラフの種類 | 定数 |
散布図 | xlXYScatter |
平滑線付き散布図 | xlXYScatterSmooth |
平滑線付き散布図データマーカーなし | xlXYScatterSmoothNoMarkers |
折れ線付き散布図 | xlXYScatterLines |
折れ付き散布図データマーカーなし | xlXYScatterLinesNoMarkers |
4.グラフの詳細設定する
作成したグラフを指定するには「ChartObject(番号)」もしくは、「 ChartObject(“グラフ名”) 」
で指定する事ができます。
表示位置
上記で作成したグラフの表示位置を指定します。
グラフの位置を設定するには、「ChartObject」のTopプロパティとLeftプロパティで設定します。
セルか座標で表示位置を指定できます。
セルで指定
Sub Sample2()
Dim ChartObj As Object
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj
.Top = Range("C2").Top
.Left = Range("C2").Left
End With
End Sub
x,y座標で指定
Sub Sample3()
Dim ChartObj As Object
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj
.Top = 100
.Left = 20
End With
End Sub
大きさを指定する
グラフの大きさを設定するには、「ChartObject」のWidthプロパティとHeightプロパティで設定します。
セル範囲と数値で指定することができます。
セルで指定する
Sub Sample4()
Dim ChartObj As Object
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj
.Width = Range("G2:L13").Width
.Height = Range("G2:L13").Height
End With
End Sub
数値で大きさを指定する
Sub Sample5()
Dim ChartObj As Object
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj
.Width = 500
.Height = 300
End With
End Sub
グラフの名前
グラフの名前を設定するには、「ChartObject」のNameプロパティで設定します。
「グラフ 1」を「Chart1」へ変更します。
Sub Sample6()
Dim ChartObj As Object
Set ChartObj = ActiveSheet.ChartObjects("グラフ 1")
With ChartObj
.Name = "Chart1"
End With
End Sub
タイトルを指定する
グラフのタイトルを指定するには、「Chart」オブジェクトのHasTitleプロパティでタイトルを表示し、「 ChartTitle」オブジェクトのTextプロパティでタイトル名を指定します。
「.ChartObjects.Chart.ChartTitle.Format.TextFrame2.TextRange.Font」でタイトルのサイズやフォントサイズ、色を指定する場合は次の様に記述します。
次のコードは、「with ChartObjects.Chart」の中に、入れ子で「ChartTitle.Format.TextFrame2.TextRange.Font」と指定しているため分かれています。
タイトルの色は「グラフ操作 グラフの作成と詳細設定をする方法」の「色一覧」をご覧ください。
Sub Sample7()
Dim ChartObj As Object
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj.Chart
.HasTitle = True
.ChartTitle.Text = "年間売上グラフ"
With .ChartTitle.Format.TextFrame2.TextRange.Font
.Size = 10
.Fill.ForeColor.ObjectThemeColor = 6 'msoThemeColorAccent2でもOK
End With
End With
End Sub
凡例を操作する
凡例は「Chart」オブジェクトの「Chart.HasLegend 」をTrue/Falseで表示を指定して、「Chart.Legend.Position」プロパティで表示位置を指定します。
凡例の色は「ChartObjects.Chart.Legend.Format.Fill」の「.Visible = msoTrue」で凡例を塗りつぶす指定をします。
「.ForeColor.RGB」で色を指定します。
凡例の表示位置は「グラフ操作 グラフの作成と詳細設定をする方法」の「表示位置一覧」をご覧ください。
Sub Sample8()
Dim ChartObj As Object
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj.Chart
.HasLegend = True '表示する
.Legend.Position = xlLegendPositionBottom '表示位置
With ChartObj.Chart.Legend.Format.Fill
.Visible = msoTrue '塗りつぶし設定
.ForeColor.RGB = RGB(255, 0, 0) '色指定
End With
End With
End Sub
5. 散布図グラフサンプルコード
散布図グラフの何種類か詳細設定も含めたサンプルコード紹介です。
データは「2.散布図グラフを作成する」で使用したデータを使います。
シンプルな散布図グラフ
Sub Sample9()
Dim ChartObj As Object
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlXYScatter
.SetSourceData Range(Cells(1, 1), Cells(25, 2))
End With
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj
.Name = "Chart1" 'グラフの名前を設定
.Top = 10 '表示位置
.Left = 200 '表示位置
.Width = 600 '幅
.Height = 250 '高さ
With .Chart
.HasTitle = True 'タイトル設定
.ChartTitle.Text = "年間売上グラフ" 'タイトル文字列
With .ChartTitle.Format.TextFrame2.TextRange.Font
.Size = 10 'タイトル文字サイズ
.Fill.ForeColor.ObjectThemeColor = 6 'タイトル文字色
End With
.HasLegend = True '凡例表示
.Legend.Position = xlLegendPositionRight '凡例表示位置(右側)
With ChartObj.Chart.Legend.Format.Fill
.Visible = msoTrue '塗りつぶし設定
.ForeColor.RGB = RGB(217, 217, 217) '色指定
End With
End With
End With
End Sub
平滑線付き散布図サンプルコード
Sub Sample10()
Dim ChartObj As Object
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlXYScatterSmooth
.SetSourceData Range(Cells(1, 1), Cells(25, 2))
End With
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj
.Name = "Chart1" 'グラフの名前を設定
.Top = 10 '表示位置
.Left = 200 '表示位置
.Width = 600 '幅
.Height = 250 '高さ
With .Chart
.HasTitle = True 'タイトル設定
.ChartTitle.Text = "年間売上グラフ" 'タイトル文字列
With .ChartTitle.Format.TextFrame2.TextRange.Font
.Size = 10 'タイトル文字サイズ
.Fill.ForeColor.ObjectThemeColor = 6 'タイトル文字色
End With
.HasLegend = True '凡例表示
.Legend.Position = xlLegendPositionRight '凡例表示位置(右側)
With ChartObj.Chart.Legend.Format.Fill
.Visible = msoTrue '塗りつぶし設定
.ForeColor.RGB = RGB(217, 217, 217) '色指定
End With
End With
End With
End Sub
平滑線付き散布図データマーカーなしサンプルコード
Sub Sample11()
Dim ChartObj As Object
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlXYScatterSmoothNoMarkers
.SetSourceData Range(Cells(1, 1), Cells(25, 2))
End With
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj
.Name = "Chart1" 'グラフの名前を設定
.Top = 10 '表示位置
.Left = 200 '表示位置
.Width = 600 '幅
.Height = 250 '高さ
With .Chart
.HasTitle = True 'タイトル設定
.ChartTitle.Text = "年間売上グラフ" 'タイトル文字列
With .ChartTitle.Format.TextFrame2.TextRange.Font
.Size = 10 'タイトル文字サイズ
.Fill.ForeColor.ObjectThemeColor = 6 'タイトル文字色
End With
.HasLegend = True '凡例表示
.Legend.Position = xlLegendPositionRight '凡例表示位置(右側)
With ChartObj.Chart.Legend.Format.Fill
.Visible = msoTrue '塗りつぶし設定
.ForeColor.RGB = RGB(217, 217, 217) '色指定
End With
End With
End With
End Sub