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

【Matplotlib】円グラフのラベルを条件付きで削除・非表示にする方法

Matplotlibの円グラフにおいて、特定の条件を満たす場合にのみラベルを表示し、それ以外は削除したいケースはよくあります。本記事では、割合(%)に応じてラベルの表示・非表示を切り替える方法を、具体的なコード例とともに解説します。

実装手順

条件に基づいてMatplotlibの円グラフからラベルを削除するには、以下の手順を実行します。

  • 図のサイズを設定し、サブプロット間およびその周囲のパディングを調整します。
  • 2次元でサイズ変更可能な表形式データを持つPandasデータフレームを作成します。
  • pie()メソッドを使って円グラフを描画し、autopct引数にlambda関数を渡して、割合が25%より大きい場合のみラベルを表示するよう条件を設定します。
  • show()メソッドを使用して図を表示します。

コード例

import pandas as pd
from matplotlib import pyplot as plt

# 図のサイズを設定
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# Pandasデータフレームを作成
df = pd.DataFrame(
   {
      'activities': ['sleep', 'exercise', 'work', 'study'],
      'hours': [8, 1, 9, 4]
   }
)

# 割合が25%超の場合のみラベルを表示する円グラフ
df.set_index('activities').plot.pie(y='hours', legend=False, autopct=lambda p: format(p, '.2f') if p > 25 else None)

plt.show()

出力結果

上記のコードを実行すると、以下のような円グラフが出力されます。

【Matplotlib】円グラフのラベルを条件付きで削除・非表示にする方法【Matplotlib】円グラフのラベルを条件付きで削除・非表示にする方法

ご覧のとおり、この円グラフでは値の割合が25%を超える項目にのみラベルが表示されています。条件に従い、「exercise」と「study」の値は25未満であるため、これらのラベルは円グラフに反映されません。

この手法は、小さなスライスが多い円グラフでラベル同士が重なって読みにくくなる問題を回避したい場合に特に有効です。autopctの閾値(ここでは25)を変更すれば、任意の条件でラベルの表示を制御できます。

  1. Matplotlibで目盛りと目盛りの間にX軸ラベルを中央揃えで配置する方法

    Matplotlibでは、補助目盛り(minor tick)を活用することで、主目盛りと主目盛りの間にラベルを中央揃えで表示できます。ここでは、株価の日付データを例に、月ごとのラベルを目盛りの間に配置する手順を解説します。実装の手順サンプルデータ(r)を読み込みます。配列のコピーを作成し、指定した型にキャストします。subplots() メソッドを使って、図とサブプロットを作成します。日付データとサンプルデータ r をプロットします。set_major_locator() および set_minor_locator() メソッドで、主目盛り・補助目盛りのロケーター(位置)を設定します。set_

  2. PythonのMatplotlibで円グラフを作成・表示する方法【初心者向け解説】

    Matplotlibは、データ可視化のために広く利用されている人気のPythonライブラリです。データの可視化は分析において非常に重要なステップであり、複雑な数値計算の結果を目で見て理解しやすくしてくれます。数値を一つひとつ確認しなくても、データ全体の傾向や構成を直感的に把握できるため、定量的な洞察を効果的に伝える手段として活用されています。Matplotlibは主に2次元のグラフやプロットを作成するために使用され、オブジェクト指向のAPIを備えているため、Pythonアプリケーションへの組み込みも容易です。IPythonシェル、Jupyter Notebook、Spyderなどの開発環境と組