Python
 Computer >> コンピューター >  >> プログラミング >> Python

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で円グラフの自動ラベル(相対値)を絶対値に置き換える方法

  1. Matplotlibで目盛りラベルをすべて表示する方法

    Matplotlibでグラフ上のすべてのラベル値を表示したい場合は、set_xticklabels() メソッドと set_yticklabels() メソッドを使用します。この記事では、具体的な手順とコード例を使って、その方法をわかりやすく解説します。実装の手順軸の目盛りとして使用できる数値のリスト(x)を作成します。subplot() 関数を使用して軸オブジェクトを取得します。subplot() は現在の図にサブプロットを追加するための便利な関数です。set_xticks メソッドと set_yticks メソッドを使い、手順1で作成したリスト x を指定して、それぞれX軸とY軸の目盛り位

  2. Python MatplotlibでY軸の値(目盛りラベル)を指定する方法

    PythonのMatplotlibでは、yticks()メソッドを使うことで、Y軸に表示する値や目盛りラベルを自由に指定できます。X軸の場合はxticks()を使用します。この記事では、具体的な手順とサンプルコードを通して、軸の目盛りをカスタマイズする方法を解説します。 Y軸の値を指定する手順 以下の手順で、Matplotlibのグラフに任意の目盛りラベルを設定できます。 numpyを使ってxおよびyのデータポイントを作成します。 軸に表示したい値として、文字列のリストを作成します。 xticks()メソッドとyticks()メソッドを使用し、それぞれX軸・Y軸の目盛りの位置とラベルを指定し