Matplotlib 円グラフ

円グラフ(Pie Chart)は、各カテゴリが全体に占める割合を表示するために使われる、一般的なデータ可視化グラフです。

pyplot のpie()メソッドを使用して円グラフを描画できます。

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)[source]

パラメータの説明:

  • x:浮動小数点型の配列またはリスト。円グラフを描画するためのデータで、各扇形の面積を表します。

  • explode:配列。各扇形の間隔を表し、デフォルト値は0です。

  • labels:リスト。各扇形のラベルで、デフォルト値は None です。

  • colors:配列。各扇形の色を表し、デフォルト値は None です。

  • autopct:円グラフ内の各扇形のパーセンテージ表示形式を設定します。%d%%整数のパーセンテージ、%0.1f小数1位、%0.1f%%小数1位のパーセンテージ、%0.2f%%小数2位のパーセンテージ。

  • labeldistance:ラベルマーカーの描画位置。半径に対する比率で、デフォルト値は 1.1 です。<1の場合は、円グラフの内側に描画されます。

  • pctdistance::labeldistance と似ており、autopct の位置スケールを指定します。デフォルト値は 0.6 です。

  • shadow::ブール値 True または False。円グラフの影を設定します。デフォルトは False で、影は設定されません。

  • radius::円グラフの半径を設定します。デフォルトは 1 です。

  • startangle::円グラフの開始角度を指定します。デフォルトでは x 軸の正方向から反時計回りに描画されます。=90 に設定すると y 軸の正方向から描画されます。

  • counterclock:ブール値。扇形を反時計回りに描画するかどうかを指定します。デフォルトは True で、反時計回りに描画されます。False の場合は時計回りです。

  • wedgeprops:辞書型。デフォルト値は None。扇形の属性(枠線の色や枠線の幅など)を指定します。例:wedgeprops={'linewidth':5} は wedge の線幅を5に設定します。

  • textprops:辞書型。テキストラベルの属性(フォントサイズやフォントの色など)を指定します。デフォルト値は None です。

  • center:浮動小数点型のリスト。円グラフの中心位置を指定します。デフォルト値:(0,0)。

  • frame:ブール型。円グラフの枠を描画するかどうかを指定します。デフォルト値:False。True の場合は、座標軸付きのフレームを描画します。

  • rotatelabels:ブール型。テキストラベルを回転するかどうかを指定します。デフォルトは False。True の場合、各ラベルを指定された角度に回転します。
  • data:データを指定します。data パラメータを設定すると、データフレーム内の列を x や labels などのパラメータの値として直接使用でき、再度渡す必要はありません。

これに加えて、pie() 関数は3つのパラメータを返すこともできます:

  • wedges:扇形オブジェクトを含むリスト。

  • texts:テキストラベルオブジェクトを含むリスト。

  • autotexts:自動生成されたテキストラベルオブジェクトを含むリスト。

次の例では、pie() を簡単に使用して円グラフを作成します:

例

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y)
plt.show()

表示結果は次のとおりです:

円グラフの各扇形のラベルと色を設定します:

例

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y,
        labels=['A','B','C','D'], # 円グラフのラベルを設定
        colors=["#d5695d", "#5d8ca8", "#5B80A6", "#a564c9"], # 円グラフの色を設定
       )
plt.title("サンプル Pie Test") # タイトルを設定
plt.show()

表示結果は次のとおりです:

2番目の扇形を強調表示し、パーセンテージをフォーマットして出力します:

例

import matplotlib.pyplot as plt

# データ
sizes = [15, 30, 45, 10]

# 円グラフのラベル
labels = ['A', 'B', 'C', 'D']

# 円グラフの色
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']

# 2番目の扇形を強調表示
explode = (0, 0.1, 0, 0)

# 円グラフを描画
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=True, startangle=90)

# タイトル
plt.title("サンプル Pie Test")

# グラフを表示
plt.show()

4つの要素を含むリスト sizes を定義しました。これは各カテゴリが全体に占める割合を表します。次に、4つの要素を含むリスト labels を定義しました。これは各カテゴリのラベルを表します。続いて、4つの要素を含むリスト colors を定義しました。これは各カテゴリの色を表します。そして、4つの要素を含むタプル explode を定義しました。これは特定の扇形を強調表示するかどうかを指定するために使います。次に、plt.pie 関数を呼び出して円グラフを描画します。ここに上記のパラメータを渡します。最後に、タイトルを追加し、plt.show() を呼び出してグラフを表示します。

表示結果は次のとおりです:

例

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y,
        labels=['A','B','C','D'], # 円グラフのラベルを設定
        colors=["#d5695d", "#5d8ca8", "#5B80A6", "#a564c9"], # 円グラフの色を設定
        explode=(0, 0.2, 0, 0), # 2番目の部分を強調表示。値が大きいほど、中心から遠くなります
        autopct='%.2f%%', # パーセンテージをフォーマットして出力
       )
plt.title("サンプル Pie Test")
plt.show()

注意:デフォルトでは、最初の扇形は x 軸から始まり反時計回りに描画されます:

その他の拡張