matplotlib – 円グラフを作成する方法

目次

概要

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

コメント

コメントする

目次