ホームページ  >  記事  >  バックエンド開発  >  Matplotlib のグループ化された棒グラフに各棒の複数の値で注釈を付けるにはどうすればよいですか?

Matplotlib のグループ化された棒グラフに各棒の複数の値で注釈を付けるにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 10:24:30638ブラウズ

How to annotate a grouped bar chart in Matplotlib with multiple values for each bar?

グループ化された棒グラフの複数の注釈

問題:
Matplotlib を使用してグループ化された棒グラフを作成しようとすると、出力が正しく表示されません.

コード例:

<code class="python">import matplotlib.pyplot as plt

# sample data
labels = ['Label 1', 'Label 2', 'Label 3']
data1 = [5, 10, 15]
data2 = [15, 10, 5]

# create the bar chart
plt.bar(labels, data1, 0.4, label='Data Set 1')
plt.bar(labels, data2, 0.4, label='Data Set 2', bottom=data1)

# attempt to annotate each bar
for i in range(3):
    plt.annotate(data1[i], (labels[i], data1[i]), xytext=(-5, 5), textcoords='offset points')
    plt.annotate(data2[i], (labels[i], data2[i]+data1[i]), xytext=(-5, 5), textcoords='offset points')

plt.legend()
plt.show()</code>

期待される出力:

各バーにはそれぞれの値の注釈が付けられる必要があります。

解決策:

方法 1: bar_label を使用する

<code class="python">import matplotlib.pyplot as plt

plt.bar(labels, data1, 0.4, label='Data Set 1')
plt.bar(labels, data2, 0.4, label='Data Set 2', bottom=data1)

for i in range(3):
    plt.bar_label(plt.gca().containers[i], labels=(data1[i], data2[i]), fmt='%.1f', padding=10)

plt.legend()
plt.show()</code>

方法 2: annotate を使用する

<code class="python">import matplotlib.pyplot as plt

plt.bar(labels, data1, 0.4, label='Data Set 1')
plt.bar(labels, data2, 0.4, label='Data Set 2', bottom=data1)

for i in range(3):
    height1 = data1[i]
    height2 = data2[i]

    # annotate for data set 1
    plt.annotate(str(height1), (labels[i], height1), xytext=(0, 5), textcoords='offset points')

    # annotate for data set 2
    plt.annotate(str(height2), (labels[i], height1 + height2), xytext=(0, 5), textcoords='offset points')

plt.legend()
plt.show()
````
</code>

以上がMatplotlib のグループ化された棒グラフに各棒の複数の値で注釈を付けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。