Python入門トップページ


目次

  1. Matplotlib とは
  2. モジュールの読み込み
  3. 折れ線グラフ
  4. 散布図
  5. 円グラフ
  6. 棒グラフ
  7. 複数の棒グラフ
  8. 積み上げグラフ
  9. 任意の数学関数のグラフ描画
  10. 複数グラフの描画

Matplotlib によるグラフの描画

散布図

あるチェーンスーパーの売り場面積 (space) と売上高 (sales) の関連について散布図を描いてみよう.まず,ここ参考にモジュールを読み込んだ後,データを準備する.

データフレームを準備するdf = pd.DataFrame([
    [26, 65], [28, 65], [25, 62], [26, 59],
    [28, 69], [33, 73], [32, 79], [29, 71],
    [30, 73], [29, 71], [38, 86], [40, 88],
    [32, 71], [26, 63], [34, 80]],
    columns=['space', 'sales']
)
print(df.head())
   space  sales
0     26     65
1     28     65
2     25     62
3     26     59
4     28     69

目次に戻る

散布図を描画するには scatter() を利用すると良い.

散布図を描くfig, ax = plt.subplots(1, 1, figsize=(6, 4))
ax.scatter(df['space'], df['sales'])
ax.set_xlabel('space')
ax.set_ylabel('sales')
plt.show()
mpl-2-01

目次に戻る

マーカを変更する.

マーカーを変更するplt.scatter(df['面積'], df['売上高'], marker='x')
plt.show()
mpl-2-02

目次に戻る

プロバスケットボールのデータを使って散布図を描いてみる.まずは,ここからダウンロードした csv ファイルをソースプログラムと同じフォルダに設置して,データフレームとして読み込む.これはホームチームとアウェイチームの得点データである.

csv ファイルを読み込むdf = pd.read_csv("basketball.csv")
df
mpl-2-03

目次に戻る

上と同じ方法で散布図を描くが,データ数が多く密集していることから分布の詳細を掴むことは難しい.

散布図を描くfig, ax = plt.subplots(1, 1, figsize=(6, 6))
ax.scatter(df['team_point_home'], df['team_point_away'])
ax.set_xlim(0, 150)
ax.set_ylim(0, 150)
ax.set_xlabel('team point home')
ax.set_ylabel('team point away')
plt.show()
mpl-2-04

目次に戻る

プロットの不透明度は alpha オプションで指定する.例えば不透明度を50%に設定すると次のようになる.

不透明度を50%に変更fig, ax = plt.subplots(1, 1, figsize=(6, 6))
ax.scatter(df['team_point_home'], df['team_point_away'], marker='o', alpha=0.5)
ax.set_xlim(0, 150)
ax.set_ylim(0, 150)
ax.set_xlabel('team point home')
ax.set_ylabel('team point away')
plt.show()
mpl-2-05

目次に戻る

さらに不透明度を5%に設定すると次のようになる.左下から右上への対角線上のデータが存在しなさそう,つまり,同点の試合がなさそうなことが読み取れる(実際に存在しないことは元のデータからチェックできる).

不透明度を5%に変更fig, ax = plt.subplots(1, 1, figsize=(6, 6))
ax.scatter(df['team_point_home'], df['team_point_away'], marker='o', alpha=0.05)
ax.set_xlim(0, 150)
ax.set_ylim(0, 150)
ax.set_xlabel('team point home')
ax.set_ylabel('team point away')
plt.show()
mpl-2-06

目次に戻る