目次
概要
matplotlib で円グラフを作成する方法について解説します。
matplotlib.pyplot.pie
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, *, normalize=None, data=None)
引数
名前 | 型 | デフォルト値 |
---|---|---|
x | 1D array-like | |
それぞれの弧の大きさ | ||
explode | array-like, default: None | None |
None でない場合、長さが len(x) の1次元配列で、それぞれの弧の中心からのオフセットを弧の半径の割合で指定します。 | ||
labels | list, default: None | None |
それぞれの弧のラベル | ||
colors | array-like, default: None | None |
それぞれの弧の色。弧の数より少ない場合、色を繰り返します。 | ||
autopct | None or str or callable, default: None | None |
この引数を指定した場合、弧の割合を表す数値ラベルを表示します。str で書式指定子を指定するか、数値を引数のとり、文字列に変換する関数を指定します。 | ||
pctdistance | float, default: 0.6 | 0.6 |
弧の数値ラベルを表示する位置。autopct が None の場合はこの引数は無視されます。 | ||
shadow | bool, default: False | False |
弧に影をつけるかどうか | ||
normalize: None or bool, default: None | ||
True の場合、x を sum(x) = 1 になるように正規化して、円グラフを作成します。False の場合は正規化を行わず、sum(x) < 1 の場合は部分的な円グラフを作成します。False で sum(x) > 1 の場合は ValueError になります。 | ||
labeldistance | float or None, default: 1.1 | 1.1 |
弧のラベルを表示する位置。None の場合、ラベルは表示されませんが、legend() で凡例を作れるように内部的に記録します。 | ||
startangle | float, default: 0 degrees | 0 |
円グラフを開始する角度を x 軸に対する反時計回りの角度で指定します。 | ||
radius | float, default: 1 | 1 |
円グラフの半径 | ||
counterclock | bool, default: True | True |
円グラフを作成する方向を反時計回りにするかどうか。 | ||
wedgeprops | dict, default: None | None |
弧の作成に使用する Wedge オブジェクトに渡す引数一覧を指定します。 | ||
textprops | dict, default: None | None |
テキストの作成に使用する Text オブジェクトに渡す引数一覧を指定します。 | ||
center | (float, float), default: (0, 0) | (0 |
円グラフの中心座標 | ||
frame | bool, default: False | False |
axes フレームを描画するかどうか | ||
rotatelabels | bool, default: False | False |
ラベルを弧に合わせて回転させるかどうか |
基本的な使い方
円グラフのそれぞれの弧の大きさを x
、文字のフォーマットを autopct
に指定します。
In [1]:
import matplotlib.pyplot as plt
x = [100, 200, 300, 400, 500]
labels = ["label1", "label2", "label3", "label4", "label5"]
fig, ax = plt.subplots()
ax.pie(x, labels=labels, autopct="%1.1f %%")
plt.show()
explode – 弧を中心から浮かせる
wedge
でそれぞれの弧の中心からのオフセット値を指定します。オフセットは弧の半径の割合で指定します。
In [2]:
x = [100, 200, 300, 400, 500]
explode = [0, 0.1, 0, 0, 0]
fig, ax = plt.subplots()
ax.pie(x, explode=explode)
plt.show()
labels, labeldistance – 弧のラベルを設定する
labels
で弧のラベルを指定します。
labeldistance
で弧のラベルの表示位置を、弧の長さの割合で中心からの距離を指定します。
In [3]:
x = [100, 200, 300, 400, 500]
labels = ["label1", "label2", "label3", "label4", "label5"]
fig, ax = plt.subplots()
ax.pie(x, labels=labels, labeldistance=1.2)
plt.show()
colors – 弧の色を設定する
colors
にそれぞれの弧の色を指定します。
In [4]:
import matplotlib.pyplot as plt
x = [100, 200, 300, 400, 500]
colors = ["r", "g", "b", "m", "y"]
labels = ["r", "g", "b", "m", "y"]
fig, ax = plt.subplots(figsize=(4, 4))
ax.pie(x, labels=labels, colors=colors)
plt.show()
autopct、pctdistance – 数値ラベルの書式、位置を設定する
autopct
で数値ラベルの書式を指定します。
pctdistance
で数値ラベルの表示位置を、弧の長さの割合で中心からの距離を指定します。
In [5]:
x = [100, 200, 300, 400, 500]
fig, ax = plt.subplots()
ax.pie(x, autopct="%1.1f %%", pctdistance=0.8)
plt.show()
shadow – 弧に影をつける
In [6]:
x = [100, 200, 300, 400, 500]
explode = [0, 0, 0.2, 0, 0]
fig, [ax1, ax2] = plt.subplots(1, 2, figsize=(8, 4))
ax1.set_title(f"shadow=\"True\"")
ax1.pie(x, explode=explode, shadow=True)
ax2.set_title(f"shadow=\"False\"")
ax2.pie(x, explode=explode, shadow=False)
plt.show()
startangle – 円グラフを開始する角度
円グラフを開始する角度を x 軸に対する反時計回りの角度で指定します。
In [7]:
x = [100, 200, 300, 400, 500]
labels = ["A", "B", "C", "D", "E"]
fig, ax = plt.subplots()
ax.pie(x, labels=labels, startangle=90)
plt.show()
radius – 円グラフの半径
radius
で円グラフの半径を指定します。(デフォルトは 1.0)
In [8]:
x = [100, 200, 300, 400, 500]
labels = ["A", "B", "C", "D", "E"]
fig, ax = plt.subplots()
ax.pie(x, labels=labels, radius=1.5)
plt.show()
counterclock – 円グラフを作成する方向
counterclock=True
の場合は反時計回り、counterclock=False
の場合は時計回りに円グラフを作成します。
In [9]:
x = [100, 200, 300, 400, 500]
labels = ["A", "B", "C", "D", "E"]
fig, [ax1, ax2] = plt.subplots(1, 2, figsize=(8, 4))
ax1.set_title(f"counterclock=\"True\"")
ax1.pie(x, labels=labels, counterclock=True)
ax2.set_title(f"counterclock=\"False\"")
ax2.pie(x, labels=labels, counterclock=False)
plt.show()
wedgeprops – Wedge オブジェクトのプロパティ
wedgeprops
に dict 形式で matplotlib.patches.Wedge オブジェクトのプロパティを指定します。
In [10]:
x = [100, 200, 300, 400, 500]
fig, ax = plt.subplots()
ax.pie(x, wedgeprops={"lw": 3, "ec": "k"})
plt.show()
textprops – Text オブジェクトのプロパティ
textprops
に dict 形式で matplotlib.text.Text オブジェクトのプロパティを指定します。
In [11]:
x = [100, 200, 300, 400, 500]
labels = ["Apple", "Orange", "Banana", "Peach", "Lemon"]
fig, ax = plt.subplots()
ax.pie(x, labels=labels, textprops={"color": "r", "size": 15, "style": "italic"})
plt.show()
center – 円グラフの中心座標を設定する
center
で円グラフの中心座標を指定します。(デフォルトは (0, 0)
)
In [12]:
x = [100, 200, 300, 400, 500]
fig, ax = plt.subplots(figsize=(8, 4))
ax.pie(x, center=(0, 0))
ax.pie(x, center=(2.5, 0))
plt.show()
rotatelabels – ラベルを弧に合わせて回転させる
rotatelabels=True
の場合はラベルを弧に合わせて回転させます。
In [13]:
x = [100, 200, 300, 400, 500]
labels = ["Apple", "Orange", "Banana", "Peach", "Lemon"]
fig, ax = plt.subplots()
ax.pie(x, labels=labels, rotatelabels=True)
plt.show()
コメント