前回は複数のAxesを1つのFigureに並べる方法を学びました。今回はこれまで使ってきた折れ線グラフ以外のグラフの種類を見ていきましょう。
前回の記事はこちら(リンク)
目次
グラフの種類と使いどころ
グラフは「何を伝えたいか」によって使い分けるのが基本です。
| グラフ | メソッド | 使いどころ |
|---|---|---|
| 折れ線グラフ | ax.plot() |
時系列など連続した変化を見たいとき |
| 棒グラフ | ax.bar() |
カテゴリごとの大きさを比べたいとき |
| 散布図 | ax.scatter() |
2つの変数の関係を見たいとき |
| ヒストグラム | ax.hist() |
データの分布を見たいとき |
| 円グラフ | ax.pie() |
全体に対する割合を見たいとき |
それぞれ見ていきましょう。
今回たくさんコードが出てきますが、メソッド名さえ変えれば、基本的な使い方はこれまでと同じなのでじっくりコードをみてみてください。きっと理解できると思いますよ。
日本語を表示するための設定
タイトルや軸ラベルに日本語を使う場合、そのまま実行すると文字が□□□のように文字化けしてしまいます。
これはMatplotlibがデフォルトで日本語フォントを持っていないためです。以下のコードを先頭に追加することで解決できます。
import matplotlib.pyplot as plt
# 環境に合わせていずれか1行のコメントアウトを外してください
plt.rcParams['font.family'] = 'Hiragino Sans' # Mac
# plt.rcParams['font.family'] = 'MS Gothic' # Windows
# plt.rcParams['font.family'] = 'IPAexGothic' # Linux
Google Colabの場合は少し手順が異なります。
# Google Colabの場合
!apt-get install -y fonts-ipafont
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'IPAGothic'
この設定は一度書いておけばそのファイル内のすべてのグラフに適用されます。日本語を使う場合は毎回忘れずに書くようにしましょう。
棒グラフ
棒グラフはax.bar()で描きます。
import matplotlib.pyplot as plt
import numpy as np
# Mac の場合(環境に合わせて変更してください)
plt.rcParams['font.family'] = 'Hiragino Sans'
fig, ax = plt.subplots()
x = ["A", "B", "C", "D"]
y = [10, 24, 15, 30]
ax.bar(x, y, color="steelblue")
ax.set_title("棒グラフ")
ax.set_xlabel("カテゴリ")
ax.set_ylabel("値")
plt.show()
表示結果
ax.plot()と引数の構造は同じで、第1引数にx軸の値、第2引数にy軸の値を渡します。x軸には文字列のリストも渡せます。
散布図
散布図はax.scatter()で描きます。
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
# ランダムなデータを生成
np.random.seed(0)
x = np.random.rand(50)
y = np.random.rand(50)
ax.scatter(x, y, color="tomato")
ax.set_title("散布図")
ax.set_xlabel("x")
ax.set_ylabel("y")
plt.show()
表示結果
np.random.seed(0)はランダムの「種」を固定するコードです。これを書いておくと毎回同じランダムデータが生成されるため、再現性のあるコードになります。
ヒストグラム
ヒストグラムはax.hist()で描きます。棒グラフと似て見えますが、**データの分布(どの値が多いか)**を見るためのグラフです。
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
# 正規分布に従うランダムデータを生成
np.random.seed(0)
data = np.random.randn(1000)
ax.hist(data, bins=30, color="mediumseagreen")
ax.set_title("ヒストグラム")
ax.set_xlabel("値")
ax.set_ylabel("頻度")
plt.show()
表示結果
binsはデータをいくつの区間に分けるかを指定します。小さいと大まかな分布、大きいと細かい分布になります。
円グラフ
円グラフはax.pie()で描きます。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
labels = ["Python", "Java", "JavaScript", "その他"]
sizes = [40, 25, 25, 10]
ax.pie(sizes, labels=labels, autopct="%1.1f%%")
ax.set_title("プログラミング言語の割合")
plt.show()
表示結果
autopct="%1.1f%%"はパーセンテージを自動で計算して表示するオプションです。%1.1fは小数点1桁で表示するという意味です。
まとめ
- グラフの種類は「何を伝えたいか」で選ぶ
- メソッド名さえ変えれば、基本的な使い方はこれまでと同じ
- よく使うグラフと対応するメソッドをまとめると:
| グラフ | メソッド |
|---|---|
| 折れ線グラフ | ax.plot() |
| 棒グラフ | ax.bar() |
| 散布図 | ax.scatter() |
| ヒストグラム | ax.hist() |
| 円グラフ | ax.pie() |
次回はグラフを画像ファイルとして保存する方法を見ていきます!



