Matplotlibで円グラフの自動ラベル(相対値)を絶対値に置き換える方法
Matplotlibの円グラフでは、自動的に表示されるラベルはデフォルトで相対値(パーセンテージ)になっています。これを元のデータの絶対値に置き換えたい場合は、autopct引数にlambda p: <計算式>という形式の関数を渡すことで実現できます。
手順
- 図のサイズを設定し、サブプロット間および周囲の余白を調整します。
- labels(ラベル)、fracs(割合)、explode(切り出し位置)のリストを作成し、パーセンテージ計算のためにfracsの合計値を求めます。
- labels、fracs、explodeを使用して円グラフを作成し、autopct=lambda p: <計算式>を指定します。
- show()メソッドで図を表示します。
コード例
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
labels = ('Read', 'Eat', 'Sleep', 'Repeat')
fracs = [5, 3, 4, 1]
total = sum(fracs)
explode = (0, 0.05, 0, 0)
plt.pie(fracs, explode=explode, labels=labels,
autopct=lambda p: '{:.0f}%'.format(p * total / 100),
shadow=True, startangle=90)
plt.show()
仕組みの解説
ポイントはautopctに渡しているラムダ式です。autopctには、Matplotlib側で計算されたパーセンテージ値pが自動的に渡されます。このpに対して「p * total / 100」という計算を行うことで、相対的なパーセンテージを元のデータの絶対値へと逆算しています。
たとえば上記の例では、fracsの合計が13なので、「Read」の値5は約38%として表示されることになります。しかし、この計算式を挟むことで、グラフ上には元のデータである「5」という絶対値がそのままラベルとして表示されるようになります。
出力結果

-
Matplotlibで目盛りラベルをすべて表示する方法
Matplotlibでグラフ上のすべてのラベル値を表示したい場合は、set_xticklabels() メソッドと set_yticklabels() メソッドを使用します。この記事では、具体的な手順とコード例を使って、その方法をわかりやすく解説します。実装の手順軸の目盛りとして使用できる数値のリスト(x)を作成します。subplot() 関数を使用して軸オブジェクトを取得します。subplot() は現在の図にサブプロットを追加するための便利な関数です。set_xticks メソッドと set_yticks メソッドを使い、手順1で作成したリスト x を指定して、それぞれX軸とY軸の目盛り位
-
Python MatplotlibでY軸の値(目盛りラベル)を指定する方法
PythonのMatplotlibでは、yticks()メソッドを使うことで、Y軸に表示する値や目盛りラベルを自由に指定できます。X軸の場合はxticks()を使用します。この記事では、具体的な手順とサンプルコードを通して、軸の目盛りをカスタマイズする方法を解説します。 Y軸の値を指定する手順 以下の手順で、Matplotlibのグラフに任意の目盛りラベルを設定できます。 numpyを使ってxおよびyのデータポイントを作成します。 軸に表示したい値として、文字列のリストを作成します。 xticks()メソッドとyticks()メソッドを使用し、それぞれX軸・Y軸の目盛りの位置とラベルを指定し