matplotlib

【Python/matplotlib】円グラフの作成方法や要素を目立たせる方法などを徹底解説!

Matplotlibを用いて円グラフを作成する方法を丁寧に解説していきたいと思います!

実はMatplotlibには、円グラフをカスタマイズするためのいろいろなオプションがあります。そのためExcelを用いて作成するよりも素早く工夫したグラフを作成できる場合もあります!

円グラフを書いてみよう

eyecatch 2

単純な円グラフ作成プログラム

実際にPythonのMatplotlibを用いて円グラフを書いてみましょう!

下記プログラムを実行してみてください!

import matplotlib.pyplot as plt 

def gen_circle_glaph(x, labels):
    plt.pie(x, labels = labels)
    plt.show()

labels = ["A", "B", "C", "D", "E"]
x = [10, 20, 30, 40, 50]
gen_circle_glaph(x, labels)

circle1 result of this program

プログラムを実行するとシンプルな円グラフを書くことができました!
ただ普段目にするような円グラフとは異なる点がいくつかありますね。

特に

  1. 与えたラベルが反時計回りに表示されている
  2. 表示開始位置が90°ずれている

ことが挙げられますね。

円グラフを修正してみる

先ほど作成したプログラムのメソッド .pie() に引数を追加して普段目にするような円グラフに修正してみます!

上記プログラムのgen_circle_graph()関数部分を下記のように変更してみましょう!

論文などでよく見る円グラフを作成できたと思います。

def gen_circle_glaph(x, labels):
    plt.pie(x, labels = labels, startangle = 90, counterclock = False)
    plt.show()

labels = ["A", "B", "C", "D", "E"]
x = [10, 20, 30, 40, 50]
gen_circle_glaph(x, labels)
circle2 result of this program

上記プログラムで指定した引数オプションは下記の二つになります!

startangle円グラフ上のどの位置から出力させるかを指定。
デフォルトは
角度は反時計回りの角度を指定。
counterclockデータの表示順を指定。
True : 反時計回り(デフォルト)
False : 時計周り

その他のオプション

円グラフを作成する場合には先ほど紹介した2つのオプション以外にも、様々なオプションがあります。これらのオプションを駆使することで様々な目的に応じて円グラフをカスタマイズすることが可能です!

すらいむ管理人

では、一つずつ丁寧に説明していきます!

option名効果
explodeグラフの中心から要素を切り出す。
colorsグラフ要素の色を指定。
autopct各要素の構成割合を%で表示。
デフォルトはNone
〇に小数点以下何桁まで表示させるかの数値を入力。
pctdistanceautopctで指定した構成割合をグラフ中心からどの位置に表示させるかを指定
デフォルトは0.6。
radius円グラフの大きさを指定。半径。
デフォルトは1
rotatelabelsラベルを自動で角度振りさせるかを指定。
デフォルトはFalse
shadow円グラフに影を描写させるかを指定。
Trueで影を表示。デフォルトはFalse
labeldistanceラベルを表示する位置を指定。
デフォルトは1.1
textpropsテキストに関するプロパティを指定。
デフォルトはNone
wedgepropsグラフの要素ことのエッジのプロパティを指定。
デフォルトはNone

explode : 要素を切り出す

explodeオプションを指定することで円グラフの一部の要素を目立たせることができます!

plt.pie(x, labels = labels, startangle = 90, counterclock = False, explode = [0, 0, 0.5, 0, 0])
circle3 result of this program

ここで、explodeオプションは各要素ごとの配置位置をリストとして指定してあげます。指定する数値が大きいほど要素が円中心から離れていきます。

なので、このような円グラフを作成することもできます!

explode = [0, 0.5, 0.5, 0, 0.5]

circle4 of this program
すらいむ管理人

協調したい要素が切り離されて表示されていると非常に見やすいグラフになりますね!

colors : 要素の色を変更する

colorsオプションでは、円グラフの要素ごとに色を指定することができます!
色の指定方法は、それぞれの要素ごとにリストで色を割り当てます。

setcolor = ["skyblue", "blue", "yellow", "lightgreen", "orange"]
plt.pie(x, labels = labels, startangle = 90, counterclock = False, colors = setcolor)

circle5 result of this program

autopct : 割合表示

autopctオプションでは、各要素ごとの割合を表示させることができます。

autopct = "%.<小数点以下の表示させたい桁数を入力>f%%"

さらに、pctdistanceオプションを指定すると割合の表示される位置を指定することができます!

例えば、下図のように表示させたい場合は“ 1.5 ”を指定します。

pctdistance= 1.5

circle6 result of this program

radius : 円グラフの大きさを指定する

radiusオプションは円グラフの大きさを指定できます。

radius = <円グラフの大きさを数値で指定>

circle7

rotatelabels : ラベルに角度を振る

rotatelabelsオプションTrueにしてあげることでラベルに角度をつけることができます!
角度は自動で割り当てられるようです。

rotatelabels = True
circle8
すらいむ管理人

各要素の割合テキストには角度が付きませんでした!
ラベルのみ角度が付くようです。。。

shadow : 円グラフに影を加える

shadowオプションTrueにすることで円に影を加えることができます!

shadow = True
circle9

影がついているのが分かりますでしょうか?
拡大してみると実際についていることが確認できます!

circle10

すらいむ管理人

浮き出て見えるので発表資料のちょっとした工夫になりますね(笑)

labeldistance : ラベルの表示位置を指定

labeldistanceオプションでは円グラフのラベルの位置を指定してあげることができます!

labeldistance = 1.5
circle11
すらいむ管理人

ちなみに、labeldistanceの値を1以下にすると要素内にラベルを表示させてあげることができます!

circle12

textprops : テキストプロパティを編集

textpropsオプションはテキストラベルの色を変えたり太字にしたりできます!

“color”の部分に変更させたい色を指定してあげます。(下図は”Red”を指定)
また文字を太字にしたい場合は、“weight”の部分に”bold”を指定してあげます!

textprops = {"color":"<任意の色を指定>", "weight":"bold"}
circle13

wedgeprops : 要素ごとのエッジプロパティを編集

wedgepropsオプションは円グラフのエッジを編集することができます!

円グラフのエッジ太さを変更したい場合は、“linewidth”の値を数値で指定してあげると編集できます!
また、エッジの色を変更したい場合は、”edgecolor”に変更したい色を指定してあげると変更できます!(下図では”Yellow”を指定)

wedgeprops={"linewidth":5, "edgecolor": "<変更したい色を指定>"}

circle14
circle15

すらいむ管理人

切り取っても、しっかりとエッジが表示されているようです!

最後にこれらの作成したグラフをGUIアプリケーション上に表示したい場合にはこちらの記事で紹介しています!

以上になります。最後まで見ていただきありがとうございました!

他方、プログラミングをしていて疲れるな、、、とか役立つガジェットなどが知りたい人はコチラの記事も確認してみてください!

プログラミング学習に役立つガジェット厳選4選!筆者が実際に使ってみて有用だと感じた、プログラミングに役立つガジェットを紹介しています!プログラミングされている方には是非とも読んでみてほしい記事です!...