Python

Python初学者向け:matplotlibで円グラフを描く方法を基本から解説

スポンサーリンク

 

この記事はこんな方におススメです
  • データ分析をはじめたいが、どのように学習を進めればよいかわからない方
  • データ分析の基本的な部分の全体像を把握しておきたい方
  • データ分析の勉強を始めたが、進め方に迷っている方

▶ 初学者向けにPythonを使ったデータ分析に役立つ記事を書いています

はじめに

今回はmatplotlibを使って円グラフを描く方法を基本から解説します。構文上は任意であっても、円グラフは、いくつかの引数は必須で設定しないと見にくかったり、わかりにくかったりしますよね。円グラフを描くときによく使う引数とともに描き方を紹介していきます。

▶ どんなグラフを使うとよいか迷うときには以下の記事をどうぞ

環境

  • Windows11
  • Python 3.11.4
  • pandas 2.0.3
  • numpy: 1.25.0
  • matplotlib: 3.7.1
  • seaborn: 0.12.2

円グラフの描き方

構文

plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, labeldistance=1.1,startangle=None, radius=None, counterclock=True)

たくさん引数を紹介しましたが、これが全てではないですし、覚える必要もありません。こんなことができるんだなというのを知っておいて、必要に応じて調べながら描画していけばよいでしょう。各引数で指定できる内容を簡単に整理しておきましょう。

  • xは円グラフの各要素の大きさを配列で指定します
  • explodeは円グラフで特定の要素を切り離して目立たせることができます。何%切り離してズラすかを配列で指定します。
  • colorsはもちろん、各要素の色の指定です。色の名前の配列で指定できます。
  • autopctで%表示することができます。よく使う書式設定は以下を参考にしてください。
    • 「%d」:整数で表示
    • 「%dd」:整数で「5%」のように%の記号まで表示
    • 「%.1f」:「.f」で小数表示。数字の部分で小数点以下の桁数を指定
  • pctdistance:%表示を出力する位置を指定できます。円の中心を0、中心から半径の位置(円周上)を 1 として数字で指定する。autopct を指定した場合のみ有効。 (デフォルト値: 0.6)
  • labeldistance:ラベルを表示する位置を指定できます。円の中心 を0、中心から半径の位置(円周上) を1として数字で指定する。 (デフォルト値: 1.1)
  • startangle:各要素の出力を開始する角度を設定できます。 通常、90度にしておくとよいでしょう。(デフォルト値: None)
  • radius:円の半径(デフォルト値:1)
  • counterclock:各要素を時計回り(False)、半時計周り(True)のどちらで表示するかを設定できます。(デフォルト値:True)

円グラフを描く

では、さっそく円グラフを描いてみましょう。

# ライブラリをインポート
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib

# 円グラフを描画
x = np.array([100, 200, 300, 400, 150])
plt.figure(figsize=(3,3))
plt.pie(x)
plt.show()
円グラフを描く

指定したリストの要素の並び順で円グラフが描かれます。ちょっとわかりにくいですね。ラベルを付けてみることにしましょう。

# 円グラフを描画:ラベルを表示
x = np.array([100, 200, 300, 400, 150])
labels = ['10代','20代','30代','40代','その他']
plt.figure(figsize=(3,3))
plt.pie(x,labels=labels)
plt.show()
円グラフを描く:ラベルを表示

この円グラフ、よくみると半時計周りに描かれていますね。通常、時計回りで描かれることの方が多いと思いますので、修正しておきましょう。counterclockにFalseを指定します。

# 円グラフを描画:ラベルを表示/時計回り
x = np.array([100, 200, 300, 400, 150])
labels = ['10代','20代','30代','40代','その他']
plt.figure(figsize=(3,3))
plt.pie(x,labels=labels,counterclock=False)
plt.show()
円グラフを描く:時計回り

まだ何か変ですね。始まり位置が時計の3時からになっています。0時の位置から始めることにしましょう。これはstartangleで指定できます。水平方向が0なので90を指定してみましょう。

# 円グラフを描画:ラベルを表示/時計回り/スタート位置の変更
x = np.array([100, 200, 300, 400, 150])
labels = ['10代','20代','30代','40代','その他']
plt.figure(figsize=(3,3))
plt.pie(x,labels=labels,counterclock=False,startangle=90)
plt.show()
円グラフを描く:スタート位置の変更

20代だけ目立たせてみましょう。explodeで切り離しの指定ができるのでした。

# 円グラフを描画:ラベルを表示/時計回り/スタート位置の変更/切り離し
x = np.array([100, 200, 300, 400, 150])
labels = ['10代','20代','30代','40代','その他']
plt.figure(figsize=(3,3))
plt.pie(x,labels=labels,counterclock=False,startangle=90,
        explode=[0,0.2,0,0,0])
plt.show()
円グラフを描く:一部切り離して目立たせる

最後に構成比を表示させてみましょう。

# 円グラフを描画:ラベルを表示/時計回り/スタート位置の変更/切り離し/%表示
x = np.array([100, 200, 300, 400, 150])
labels = ['10代','20代','30代','40代','その他']
plt.figure(figsize=(3,3))
plt.pie(x,labels=labels,counterclock=False,startangle=90,
        explode=[0,0.2,0,0,0],autopct='%.1f%%')
plt.show()
円グラフを描く:%表示
スポンサーリンク

まとめ

今回はmatplotlibで円グラフを描く方法を基本から解説しました。円グラフを描く機会は減ってきたように感じますが、割合を可視化するときには使う場面もありますよね。いざ、円グラフを描いてみると、少し設定を変えてみたいところが結構ありますよね。今回は、最低限このくらいの設定は知っておくとよいかな、というものをまとめました。

コメント

タイトルとURLをコピーしました