matplotlib ライブラリ

【python】matplotlibで円グラフを作成する方法【ラベル、フォントサイズ変更方法など】

pythonのグラフ描画ライブラリである「matplotlib」で、円グラフを作成する方法について紹介します。

本記事では、下記の内容を紹介しています。

この記事で分かること

  • 円グラフの作成方法
  • 円グラフを大きい順に並べる【counterclock、startangle】
  • 円グラフに割合(数値)を表示【autopct】
  • 円グラフにラベルを表示【labels】
  • 円グラフにタイトルを表示【plt.title】
  • 円グラフのフォントサイズを変更【textprops】
  • 円グラフに凡例を表示【plt.legend()】
  • 円グラフの色を変更【colors】
  • 円グラフをpandasから作成
  • 円グラフをcsvファイルから作成

はじめに、基本的な内容として、円グラフを作成する方法を紹介します。

そのあとに、円グラフを割合の大きい順番に並べる方法や、ラベルを表示する方法など、円グラフを見やすく表示する方法について紹介します。

スポンサーリンク

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

matplotlibには、円グラフを作成するメソッドとして、matplotlib.pyplot.pieが用意されています

matplotlib.pyplot.pie の引数の指定方法について、 公式ドキュメント から引用しました。

matplotlibのpieメソッドの引数

matplotlib 公式ドキュメント

"x" は、円グラフ描画用の数値のリストになります。引数として必須となるのは、 "x" だけです。

matplotlib.pyplot.pie の詳しい使用方法については、 公式ドキュメント にて御確認ください。

以下、matplotlib.pyplot.pie を用いて円グラフを作成するサンプルコードです。

### matplotlibで円グラフを作成
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]

plt.pie(x)
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

> plt.pie( x )

matplotlib.pyplot.pie に、円グラフ生成用のデータ "x"を引数として渡しています。

これだけで円グラフが作成できてしまいます。

ここからは、円グラフを見やすくするために、要素を追加したり変更する方法を紹介します。

matplotlibの円グラフを大きい順に順番に並べる【counterclock、startangle】

先ほどのグラフは、円グラフが0度から始まっており、普段あまり見慣れないグラフになっています。

見慣れた円グラフになるように修正するには、以下の変更を加えます。

  • 円グラフを時計回りに並べる
  • 円グラフの開始を90度からにする

それぞれの変更方法について順番に紹介します。

時計回りに並べる【counterclock】

要素が時計回りになるようにします

counterclock=False と指定することで、時計回りにすることができます。

以下、サンプルコードです。

### 時計回りに並べる
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]

plt.pie(x, counterclock=False)
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

開始角度を90度にする【startangle】

円グラフが90度から始まるようにします

startangle=90 と指定することで、円グラフを90度から始まるように変更できます。

以下、サンプルコードです。

### 開始角度を90度にする
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]

plt.pie(x, startangle=90)
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

円グラフを大きい順に順番に並べる

時計回りにして、90度から始めることで、普段見慣れた円グラフにすることができます

以下、サンプルコードです。

### 円グラフを大きい順番に並べる
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]

plt.pie(x, startangle=90, counterclock=False)
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

スポンサーリンク

matplotlibの円グラフに割合(数値)を表示【autopct】

次に、円グラフに割合を表示する方法を紹介します。

引数 autopct に、書式指定を渡すことで、割合を表示することができます。

円グラフに割合(数値)を表示【autopctの使い方】

autopct に渡す"書式指定"について、簡単に紹介します。

書式指定は、"%"から始まる文字列で指定します。

以下に、書式指定の例を紹介します。

書式指定表示例
'%d'42
'%d%%'42%
'%.1f'42.1
'%.2f'42.11
'%.1f%%'42.1%

"d"を指定すると整数になり、".f"を指定すると小数になります。小数の場合は"f"の前の数値で小数点以下の桁数を指定できます。

また、%%とすることで、%を表示できます。

以下、円グラフに割合を表示するサンプルコードです。

### 円グラフに割合(数値)を表示
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]

plt.pie(x, startangle=90, counterclock=False,  autopct='%.1f%%')
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

> plt.pie(x, startangle=90, counterclock=False, autopct='%.1f%%')

書式指定として、 「数点以下の桁数1桁 + % 」となるように、指定しています。

割合(数値)のラベルの位置【pctdistance】

割合の表示位置は、pctdistance で変更できます。

なお、pctdistanceのデフォルトは 0.6 です。

以下、割合のデータラベルの表示位置を変更するサンプルコードです。

### 割合(数値)のラベルの位置
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]

plt.pie(x, startangle=90, counterclock=False,  autopct='%.1f%%', pctdistance=0.8)
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

matplotlibの円グラフにラベルを表示【labels】

円グラフにラベル表示する方法を紹介します。

labels にデータに対応したラベルのリストを渡すことで、ラベルを表示できます。

以下、円グラフにラベルを表示するサンプルコードです。

### ラベルを表示
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]
labels = ['A', 'B', 'C', 'D', 'E']

plt.pie(x, startangle=90, counterclock=False,  autopct='%.1f%%', pctdistance=0.8, labels=labels)
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

ラベルの位置を変更【labeldistance】

ラベルの位置は、 labeldistance で変更できます。

なお、labeldistance のデフォルトは 1.1 です。

以下、円グラフのラベルの位置を変更するサンプルコードです。

### ラベルの位置を変更
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]
labels = ['A', 'B', 'C', 'D', 'E']

plt.pie(x, startangle=90, counterclock=False,  autopct='%.1f%%', pctdistance=0.8, labels=labels,
       labeldistance=1.2)
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

スポンサーリンク

matplotlibの円グラフにタイトルを表示【plt.title】

円グラフのタイトルを表示する方法を紹介します。

タイトルは、 matplotlib.pyplot.title( ) で指定します。

以下、円グラフにタイトルを表示するサンプルコードです。

### タイトルを表示
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]
labels = ['A', 'B', 'C', 'D', 'E']

plt.pie(x, startangle=90, counterclock=False,  autopct='%.1f%%', pctdistance=0.8, labels=labels,
       labeldistance=1.2)

plt.title('Test',fontsize = 18)

plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

> plt.title('Test', fontsize = 18)

タイトルとして表示する文字列と、フォントサイズを指定しています。

matplotlibの円グラフのフォント(文字)サイズを変更【textprops】

円グラフのフォントサイズを変更する方法を紹介します。

引数 textprops に辞書型で設定を渡すことで、テキストに関するさまざまな変更をおこなうことができます。

フォントサイズを変更する場合は、辞書のキーとして、fontsize を指定します。

以下、円グラフのフォントサイズを変更するサンプルコードです。

### フォントサイズを変更
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]
labels = ['A', 'B', 'C', 'D', 'E']

textprops = {'fontsize':15}

plt.pie(x, startangle=90, counterclock=False,  autopct='%.1f%%', pctdistance=0.8, labels=labels,
       labeldistance=1.2, textprops=textprops)

plt.title("Test",fontsize = 18)

plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

> textprops = {'fontsize':15}

キーとして、fontsizeを指定しています。

フォントサイズ以外にも、ラベルを太字にしたり斜めにすることもできます。
興味のある方はtextpropsの使い方について調べてみてください。

スポンサーリンク

matplotlibの円グラフに凡例(legend)を表示【plt.legend()】

円グラフに凡例を表示する方法を紹介します。

グラフに凡例を表示する方法については、下記の記事で紹介しています。

matplotlibでグラフに凡例を表示する方法

円グラフで凡例を表示する方法は、他のグラフと変わらないのですが、
ラベルを表示したままだと騒がしいので、下記のサンプルコードでは円グラフの周りのラベルを非表示にしています。

### 凡例(legend)を表示
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]
labels = ['A', 'B', 'C', 'D', 'E']

plt.pie(x, startangle=90, counterclock=False,  autopct='%.1f%%', pctdistance=0.8, labels=labels,
       labeldistance=None)
plt.legend()
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

> plt.pie(x, startangle=90, counterclock=False, autopct='%.1f%%', pctdistance=0.8, labels=labels, labeldistance=None)

labelsに凡例として表示したい文字列のリストを渡しています。
labeldistance=None とすることで、円グラフの周りのラベルを非表示にできます。

matplotlibの円グラフの色を変更【colors】

円グラフの色を変更する方法を紹介します。

グラフの色を指定する方法については、下記の記事で紹介しています。

matplotlibのグラフの色を指定する方法

以下、円グラフの色を変更するサンプルコードです。

### 円グラフの色を変更
import matplotlib.pyplot as plt

x = [80, 50, 30, 20, 10]
labels = ['A', 'B', 'C', 'D', 'E']

colorlist = ['b', 'g', 'r', 'tab:cyan', 'teal']

plt.pie(x, startangle=90, counterclock=False,  autopct='%.1f%%', pctdistance=0.8, labels=labels,
       labeldistance=1.1, colors=colorlist)
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

カラーマップを使用して、円グラフの色を変更

matplotlibに用意されているカラーマップを利用して、円グラフの色を変更することもできます。

カラーマップを利用してグラフの色を変更する方法については、下記の記事で紹介しています。

matplotlibでカラーマップを利用してグラフの色を変更する方法

以下、サンプルコードです。

### カラーマップを使用して、円グラフの色を変更
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import numpy as np

x = [80, 50, 30, 20, 10]
labels = ['A', 'B', 'C', 'D', 'E']

cmap=plt.get_cmap('Set1') 
colorlist = [cmap(i) for i in range(len(x))]

plt.pie(x, startangle=90, counterclock=False,  autopct='%.1f%%', pctdistance=0.8, labels=labels,
       labeldistance=1.1, colors=colorlist)
plt.show()

コード実行後、表示されるグラフはこちらになります。

実行結果

> cmap=plt.get_cmap('Set1')
> colorlist = [cmap(i) for i in range(len(x))]

plt.get_cmap('Set1') で、カラーマップ "Set1" を取得しています。
[cmap(i) for i in range(len(x))] で、リスト内包表記で、カラーマップの色をリストとして、データ数分取得しています。

リスト内包表記については、下記の記事で紹介しています。

リスト内包表記の使い方

スポンサーリンク

matplotlibの円グラフをpandas(dataframe)から作成

pythonのデータ解析支援ライブラリである「pandas」を用いて、円グラフを作成する方法について紹介します。

pandasのメソッドとしてplotが用意されており、簡単にさまざまなグラフを作成することができます

以下、pandasを用いて円グラフを作成するサンプルコードです。

### 円グラフをpandasから作成
import numpy as np
import pandas as pd

x = [80, 50, 30, 20, 10]
labels = ['A', 'B', 'C', 'D', 'E']
col = ['test']

df = pd.DataFrame(data=x, index=labels, columns=col)

df['test'].plot.pie(startangle=90, counterclock=False,  autopct='%.1f%%', pctdistance=0.8, labels=labels,
       labeldistance=1.1)

データフレームには、下記のようにデータが入っています。

データフレーム

コード実行後、表示されるグラフはこちらになります。

実行結果

> df['test'].plot.pie(startangle=90, counterclock=False, autopct='%.1f%%', pctdistance=0.8, labels=labels, labeldistance=1.1)

データフレームのうち、円グラフにしたいカラムを指定して、 .plot.pie( ) で円グラフを描画しています。
引数の指定方法は、matplotlibと同じです。

matplotlibの円グラフをcsvファイルから作成

csvファイルから円グラフを作成する方法を紹介します。

csvファイルの読み込み方法は下記の記事で紹介しています。

csvファイルを読み込む方法

csvファイルを読み込む方法はいくつかありますが、今回はpandasを用いて読み込みます。

pandasでデータを読み込んだあとは、前述の方法で簡単に円グラフを作成できます。

以下、csvファイルをpandasモジュールで読み込み、円グラフを作成するサンプルコードです。

### 円グラフをcsvファイルから作成
import matplotlib.pyplot as plt
import pandas as pd
import pathlib

path_dir = pathlib.Path(r'test')
name_file = 'test.csv'
path_file = path_dir.joinpath(name_file)

df = pd.read_csv(path_file, index_col=0)

df['test2'].plot.pie(startangle=90, counterclock=False,  autopct='%.1f%%', pctdistance=0.8, labels=df.index,
       labeldistance=1.1)

下記のcsvファイルを読み込みます。

読み込ませるcsvファイル

コード実行後、表示されるグラフはこちらになります。

実行結果

> path_dir = pathlib.Path(r'test')
> name_file = 'test.csv'
>path_file = path_dir.joinpath(name_file)

pathlibモジュールを用いて、csvファイルのパスを作成しています。
pathlibモジュールは、パスをオブジェクトとして操作できるモジュールです。下記の記事で操作方法を紹介しています。

pathlibの使い方

> df = pd.read_csv(path_file, index_col=0)

pandasで、csvファイルを読み込んでいます。

> df['test2'].plot.pie(startangle=90, counterclock=False, autopct='%.1f%%', pctdistance=0.8, labels=df.index, labeldistance=1.1)

labelsに、df.indexを渡しています。

スポンサーリンク

-matplotlib, ライブラリ
-,