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

目次に戻る