0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Matplotlibの棒グラフ・散布図・ヒストグラム・円グラフの描き方まとめ〜初心者向けMatplotlib講座 #9〜

0
Posted at

前回は複数のAxesを1つのFigureに並べる方法を学びました。今回はこれまで使ってきた折れ線グラフ以外のグラフの種類を見ていきましょう。

前回の記事はこちら(リンク)

目次

  1. グラフの種類と使いどころ
  2. 日本語を表示するための設定
  3. 棒グラフ
  4. 散布図
  5. ヒストグラム
  6. 円グラフ
  7. まとめ

グラフの種類と使いどころ

グラフは「何を伝えたいか」によって使い分けるのが基本です。

グラフ メソッド 使いどころ
折れ線グラフ 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()

表示結果

image.png

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()

表示結果

image.png

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()

表示結果

image.png

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()

表示結果

image.png

autopct="%1.1f%%"はパーセンテージを自動で計算して表示するオプションです。%1.1fは小数点1桁で表示するという意味です。

まとめ

  • グラフの種類は「何を伝えたいか」で選ぶ
  • メソッド名さえ変えれば、基本的な使い方はこれまでと同じ
  • よく使うグラフと対応するメソッドをまとめると:
グラフ メソッド
折れ線グラフ ax.plot()
棒グラフ ax.bar()
散布図 ax.scatter()
ヒストグラム ax.hist()
円グラフ ax.pie()

次回はグラフを画像ファイルとして保存する方法を見ていきます!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?