Matplotlib & Seaborn 入門講座 | 06.Pythonを使った円グラフの作成方法

挨拶

こんにちは。キノコードです。
Matplotlib & Seaborn入門講座の6回目です。
今までのレッスンでは、線グラフ、棒グラフをmatplotlibで作成するレッスンを進めてきました。
このレッスンでは、円グラフの作成方法について解説します。
線グラフ、棒グラフ、円グラフが仕事での資料作成によく多用されるかと思います。
ぜひこのレッスンでPythonでの円グラフの作成方法をマスターしてください。
なお、キノコードでは、YouTubeのメンバーシップを募集しています。
キノコードを応援してくださる方は、メンバーになるをクリックをお願いします。
メンバーシップをはじめた理由などの動画もありますので、そちらもご視聴ください。
概要欄にURLを貼っておきます。
それではレッスンスタートです。

ライブラリインポート

import matplotlib.pyplot as plt
%matplotlib inline

それでは、ライブラリをインポートする記述をします。
matplotlibの中のpyplotを読み込みます。
asを記述するとライブラリ名を好きな名前で使うことができます。
従って、matplotlibをpltという名前でインポートします。
また、jupyterのnotebookの中でグラフを出力させる記述をします。
パーセントの後に、matplotlib inlineと書きます。
実行します。
インポートが完了しました。

円グラフ作成

value = [10,15,25,35]                
label = ['tomato', 'carrot', 'potato', 'onion']

plt.pie(x=value, labels=label)
plt.show()

まずは、簡単な円グラフを作成してみましょう。
valueという変数に、リストで数字を代入します。
リストの中の数字を合計するとは85です。
円グラフの合計が100にならなくても、100%の円グラフを作成できます。
さて、labelという変数には、valueで与えたリストと同じ個数分の要素を与えます。
今回はtomato,carrot,poteto,onionの4つとします。
次に、pltドットpieと書いて円グラフを作成する記述をします。
括弧の中の第一引数に、xイコールvalueと書きます。
labelsという引数には、先ほど設定したlabelを渡します。
最後に、pltドットshow、丸括弧を書いて実行します。
円グラフを作成できました。

plt.pie(x=value, labels=label, autopct='%1.1f%%')
plt.show()

円グラフの中に、パーセンテージの表示をさせてみましょう。
pltドットpieの丸括弧の中に、autopctイコールと書きます。
パーセントの後に、小数点以下第1位までを示す1.1fと書いてさらにパーセントを2つ書きます。
実行します。
グラフにパーセンテージが表示されました。

plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90)
plt.show()

matplotlibで円グラフを作成すると、デフォルトでは時計の3時の位置から反時計回りに表示されます。
これを、12時の位置から時計回りで表示させてみましょう。
開始位置を調整するにはstartangleに値を代入します。
pltドットpieの丸括弧の中に、startangleイコール90と記述することで、スタートが12時の位置になります。
理由を説明します。
3時の位置は水平方向ですよね。
つまり、角度は0度です。
デフォルトでは0になっているのです。
90は90度のことです。12時の位置になりますよね。
実行して確認をしてみましょう。
12時の位置から始まる円グラフを作成できました。

plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=180)
plt.show()

startangleに180を代入してみましょう。
9時の位置から始まるはずです。
実行します。
9時の位置から円グラフがスタートしました。
ただし、円グラフが反時計回りで違和感を感じられるかもしれません。
これを時計回りに変更してみましょう。

plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90,counterclock=False)
plt.show()

時計回りに変更するには、counterclockイコールFalseとすると表示が時計回りになります。
Trueとすると反時計回りに表示されます。
つまり、デフォルトはTrueになってるということになります。
counterclockをFlaseとしてみましょう。
グラフの記述が時計まわりになるです。
またスタート位置も0時からのスタートとするために、startangleに90を代入します。
実行してみましょう。

#カラー変更

colorlist = ["pink", "yellow", "skyblue", "orange"]

plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90, counterclock=False, colors=colorlist)
plt.show()

次に、円グラフの色を変更してみましょう。
colorlistという変数に、リストで好きな色を与えます。
ここで、要素と同じ個数の色を与えることに注意しましょう。
pltドットpieの丸括弧の中に、colorsと記述しイコール、リストで設定したcolorlistを与えます。
実行します。
グラフの色を変更できました。

#カラー変更(カラーコード)

colorlist = ["#BAD7DB", "#B0C6B5", "#E0E1C3", "#F3D6D6"]

plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90, counterclock=False, colors=colorlist)
plt.show()

カラーコードでも色を指定できます。
実行します。
カラーコードで指定した色に変更できました。

#一部を切り取る
plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90, colors=colorlist, counterclock=False, explode=[0, 0.3, 0, 0])
plt.show()

次に、円グラフの一部を切り取って表示させてみましょう。
今回は、17.6%のcarrotを切り出してみます。
pltドットpieの丸括弧の中に、explode()イコールと記述し角括弧、与えた4つの要素の中心からの位置を数値で設定します。
円グラフの中心が0で、円周が1です。
つまり、今回は2つ目の要素を切り出したいので、角括弧の中の2つ目の数値を0.3とします。
実行します。
2つ目の要素が切り出されました。

#一部を切り取る
plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90, colors=colorlist, counterclock=False, explode=[0, 1, 0, 0])
plt.show()

0.3ではなく1に変更してみましょう。
実行します。
切り抜かれた始点が円周の1あたりに移動しました。

#立体感を付ける
plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90, colors=colorlist, counterclock=False, explode=[0, 0.3, 0, 0], shadow=True)
plt.show()

円グラフに影を付けてみましょう。
pltドットpieの丸括弧の中に、shadowイコールTrueと記述します。
実行します。
円グラフに影を付けることができました。

plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90, colors=colorlist, counterclock=False, explode=[0, 0.3, 0, 0], shadow=True)
plt.title('PieGraph')
plt.show()

グラフにタイトルを付けてみましょう。
pltドットtitleと書いて丸括弧、丸括弧の中に好きなタイトルを記述しシングルコーテーションでくくります。
実行します。
グラフにタイトルを追加できました。

グラフ保存

plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90, colors=colorlist, counterclock=False, explode=[0, 0.3, 0, 0], shadow=True)
plt.title('PieGraph')
plt.savefig('sample1.png')

作成したグラフを保存してみましょう。
pltドットsavefigと記述し丸括弧、丸括弧の中に好きなファイル名を記述しシングルコーテーションでくくります。
今回はpng形式で保存してみます。
他にも、jpegやpdfを指定できます。
実行します。
グラフを保存できました。

ドーナツグラフ

plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90, counterclock=False)
plt.pie([100], colors='white', radius=0.5)    
plt.show()

次に、ドーナツ形のグラフを作成してみましょう。
matplotlibでは、後から描いた記述が上書きされます。
従って、先ほど作成した円グラフに、白い円を上書きする記述をすることで、ドーナツ型のグラフを作成できます。
pltドットplotと書いて丸括弧、丸括弧の中に白い円を作成する記述をします。
角括弧の中に100と書いて、100%の円を描く指定をします。
100%の円を白塗りにするために、colorsにはwhiteを指定します。
radiusで円の大きさを指定できます。
今回は0.5とします。
実行します。
ドーナツ型のグラフを作成できました。

パーセンテージの表示が白い円と少し重なっているので、位置をずらしてみましょう。

plt.pie(x=value, labels=label, autopct="%1.1f%%", startangle=90, counterclock=False, pctdistance=0.75)
plt.pie([100], colors='white', radius=0.5)
plt.show()

pctdistanceで、パーセンテージの位置を調整できます。
円の中心が0、円周が1です。
従って0.75の位置に指定してみます。
実行します。
パーセンテージの位置を変更できました。

挨拶

円グラフの作成方法についての説明は以上です。
難しい点などありませんでしたでしょうか?
キノコードではmatplotlibやSeabornのレッスンだけではなく、仕事の自動化のレッスン、人工知能のレッスンなども配信しています。
キノコードの新着動画はチャンネル登録をしていただければ、通知が届きますので、ぜひチャンネル登録をお願いします。
それでは、次のレッスンでお会いしましょう。