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%」というラベルが付いた棒グラフが出力されます。

補足:実際の割合を計算して表示する場合
上記の例では元の値に「%」を付けて表示しているだけですが、全体に対する割合(真のパーセンテージ)を表示したい場合は、各値を合計で割り、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()で取得した値を加工することで、小数点以下の桁数を整えた見やすいパーセンテージラベルを自由にカスタマイズできます。データ分析やレポート作成の際にぜひ活用してください。
-
【Python】Matplotlibで条件に応じて特定の棒グラフの色だけを変更する方法
Matplotlibで棒グラフを描く際、「ある条件が真の場合だけ特定のバーの色を変えたい」というケースはよくあります。例えば、値が2以外なら赤色、値が2なら黄色にする、といった条件分岐による色の切り替えです。実装の手順図のサイズを設定し、サブプロット間・周囲の余白(パディング)を調整します。バーの幅を表す変数を初期化します。データの値リストと、条件に応じた色のリストを作成します。bar()メソッドを使って棒グラフを描画します。show()メソッドで図を表示します。サンプルコードポイントは、リスト内包表記を使って「値が2でなければ赤、2なら黄色」というルールに従ったカラーリストを動的に生成するこ
-
Matplotlibで棒グラフのラベルに絵文字を表示する方法
Matplotlibでは、annotate()メソッドを使うことで、棒グラフの各バーの上部に絵文字をラベルとして簡単に配置できます。データの視覚化にアクセントを加えたい場合に便利なテクニックです。実装手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。頻度を表すリストfreqsと、絵文字を含むラベルのリストlabelsを作成します。figure()メソッドを使用して、新しい図を作成します。bar()メソッドで棒グラフを描画します。annotate()メソッドを使って、各バーの上に絵文字をラベルとして配置します。show()メソッドで図を表示します。コード例impo