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

Matplotlibで棒グラフの値をパーセンテージ表示に変更する方法

Matplotlibで作成した棒グラフの各バーの上に、値をパーセンテージとして表示したいケースはよくあります。本記事では、bar()メソッドとannotate()メソッドを組み合わせて、棒グラフの値を「%」形式でラベル表示する方法を解説します。

実装手順

  • 図のサイズとレイアウトを設定する:plt.rcParamsを使ってフィギュアサイズを指定し、サブプロット間および周囲の余白を自動調整します。

  • 度数のリストを作成する:グラフに描画したいデータ(頻度)をリストとして用意します。

  • フィギュアを作成またはアクティブ化する:plt.figure()で新しい図を作成するか、既存の図をアクティブにします。

  • 棒グラフを描画する:bar()メソッドを使用して棒グラフを作成します。

  • 各バーにパーセンテージを注釈する:棒グラフの各バー(パッチ)を反復処理して高さを取得し、annotate()メソッドで値を「%」付きのテキストとしてバーの上部に配置します。

  • 図を表示する:show()メソッドを呼び出して、完成したグラフを画面に表示します。

コード例

import numpy as np
from matplotlib import pyplot as plt

# フィギュアサイズとレイアウトの設定
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# 度数データ
frequencies = [7, 8, 5, 3, 6]

plt.figure()

# 棒グラフを作成
p1 = plt.bar(np.arange(len(frequencies)), frequencies)

# 各バーの上部に値をパーセンテージ形式で注釈
for rect1 in p1:
    height = rect1.get_height()
    plt.annotate("{}%".format(height),
                 (rect1.get_x() + rect1.get_width()/2, height+.05),
                 ha="center", va="bottom", fontsize=15)

plt.show()

実行結果

上記のコードを実行すると、各バーの上部に「7%」「8%」「5%」「3%」「6%」というラベルが付いた棒グラフが出力されます。

Matplotlibで棒グラフの値をパーセンテージ表示に変更する方法

補足:実際の割合を計算して表示する場合

上記の例では元の値に「%」を付けて表示しているだけですが、全体に対する割合(真のパーセンテージ)を表示したい場合は、各値を合計で割り、100を掛けた値をフォーマットするとより正確です。

total = sum(frequencies)
for rect1 in p1:
    height = rect1.get_height()
    plt.annotate("{:.1f}%".format(height / total * 100),
                 (rect1.get_x() + rect1.get_width()/2, height+.05),
                 ha="center", va="bottom", fontsize=15)

このようにget_height()で取得した値を加工することで、小数点以下の桁数を整えた見やすいパーセンテージラベルを自由にカスタマイズできます。データ分析やレポート作成の際にぜひ活用してください。

  1. 【Python】Matplotlibで条件に応じて特定の棒グラフの色だけを変更する方法

    Matplotlibで棒グラフを描く際、「ある条件が真の場合だけ特定のバーの色を変えたい」というケースはよくあります。例えば、値が2以外なら赤色、値が2なら黄色にする、といった条件分岐による色の切り替えです。実装の手順図のサイズを設定し、サブプロット間・周囲の余白(パディング)を調整します。バーの幅を表す変数を初期化します。データの値リストと、条件に応じた色のリストを作成します。bar()メソッドを使って棒グラフを描画します。show()メソッドで図を表示します。サンプルコードポイントは、リスト内包表記を使って「値が2でなければ赤、2なら黄色」というルールに従ったカラーリストを動的に生成するこ

  2. Matplotlibで棒グラフのラベルに絵文字を表示する方法

    Matplotlibでは、annotate()メソッドを使うことで、棒グラフの各バーの上部に絵文字をラベルとして簡単に配置できます。データの視覚化にアクセントを加えたい場合に便利なテクニックです。実装手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。頻度を表すリストfreqsと、絵文字を含むラベルのリストlabelsを作成します。figure()メソッドを使用して、新しい図を作成します。bar()メソッドで棒グラフを描画します。annotate()メソッドを使って、各バーの上に絵文字をラベルとして配置します。show()メソッドで図を表示します。コード例impo