Pythonのグラフ描画ツール、Matplotlibで散布図を作る方法を紹介します。
Contents
Matplotlibで散布図を描画
import matplotlib.pyplot as plt #モジュールのインポート
x = [1,2,3,4,5] #x軸用のデータ
y = [1,2,3,4,5] #y軸用のデータ
y2 = [2,4,6,8,10] #y軸用のデータ
y3 = [3,6,9,12,15] #y軸用のデータ
Figure, ax = plt.subplots() #グラフを定義
ax.scatter(x,y) #プロット
ax.scatter(x,y2) #プロット
ax.scatter(x,y3) #プロット
plt.show() #グラフを描画
このコードは、以下のような散布図を生成します。
Figure, ax = plt.subplots()は、Matplotlib公式が推奨しているグラフ指定方法です。axが持つメソッド(この場合はscatter())に引数を渡すことで、グラフにできます。
散布図はscatter()に、x軸用のデータ、y軸用のデータを順に渡します。
散布図のマーカーの形を変えてみる
上述した方法は、最もシンプルな散布図の描画方法です。ここで、マーカーの形を変えてみましょう。
import matplotlib.pyplot as plt #モジュールのインポート
x = [1,2,3,4,5] #x軸用のデータ
y = [1,2,3,4,5] #y軸用のデータ
y2 = [2,4,6,8,10] #y軸用のデータ
y3 = [3,6,9,12,15] #y軸用のデータ
Figure, ax = plt.subplots() #グラフを定義
ax.scatter(x,y, marker='o') #markerを指定
ax.scatter(x,y2, marker='s') #markerを指定
ax.scatter(x,y3, marker='^') #markerを指定
plt.show() #グラフを描画
出力される散布図は以下の通りです。
markerに文字列を指定することで、形が変わります。’o’ならマル、’s’なら四角、’^’なら三角ですね。
この他にも、指定方法はたくさんあります。こちらのページを参照してみてください。
散布図のマーカーの面積を変える
散布図のマーカー面積を変更するには、scatter()にs=’100’のような引数を渡します。
import matplotlib.pyplot as plt #モジュールのインポート
x = [1,2,3,4,5] #x軸用のデータ
y = [1,2,3,4,5] #y軸用のデータ
y2 = [2,4,6,8,10] #y軸用のデータ
y3 = [3,6,9,12,15] #y軸用のデータ
Figure, ax = plt.subplots() #グラフを定義
ax.scatter(x,y, marker='o', s=100) #markerの面積を変更
ax.scatter(x,y2, marker='s', s=200) #markerの面積を変更
ax.scatter(x,y3, marker='^', s=300) #markerの面積を変更
plt.show() #グラフを描画
散布図の出力結果は以下の通りです。
sに指定している数値が大きいほど、面積が大きくなっているのがわかるかと思います。
散布図のマーカーの色を指定
マーカーの色を指定するには、color=’black’のような引数を、scatter()に渡す必要があります。
import matplotlib.pyplot as plt #モジュールのインポート
x = [1,2,3,4,5] #x軸用のデータ
y = [1,2,3,4,5] #y軸用のデータ
y2 = [2,4,6,8,10] #y軸用のデータ
y3 = [3,6,9,12,15] #y軸用のデータ
Figure, ax = plt.subplots() #グラフを定義
ax.scatter(x,y, marker='o', s=100, color='black') #markerの色を指定
ax.scatter(x,y2, marker='s', s=200, color='black') #markerの色を指定
ax.scatter(x,y3, marker='^', s=300, color='black') #markerの色を指定
plt.show() #グラフを描画
散布図の出力結果は次の通りです。
Numpyと組み合わせて、ランダム散布図を作る
Matplotlibは、NumpyやPandasと非常に相性が良いライブラリです。Numpyの乱数生成機能を使って、100個の点をランダムに表示してみましょう。
import matplotlib.pyplot as plt #モジュールのインポート
import numpy as np #Numpyのインポート
x = np.random.rand(100) #x軸用のデータ
y = np.random.rand(100) #y軸用のデータ
colors = np.random.rand(100) #色をランダムな数値で指定
area = (30*np.random.rand(100))**2 #面積用データ
Figure, ax = plt.subplots() #グラフを定義
ax.scatter(x,y, c=colors, s=area, alpha=0.5) #sで色を配列で一つづつ指定、alphaは透明度
plt.show() #グラフを描画
このコードで、次のような散布図が出力されます。
個々のマーカーの色を、配列で指定するときは、c=[配列]とします。また、alphaでは、透明度が変更できます。0が透明で、1が不透明です。
Appendix
関連記事:x軸、y軸の範囲を変更
関連記事:複数のグラフをまとめて描画
関連記事:グラフを保存する
関連記事:折れ線グラフを描画
関連記事:棒グラフを描画
関連記事:グラフの色を指定
参考書籍:「Pythonによるデータ分析入門 第2版」