ホームページ >バックエンド開発 >Python チュートリアル >Matplotlib のグループ化された棒グラフに各棒の複数の値で注釈を付けるにはどうすればよいですか?
問題:
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 サイトの他の関連記事を参照してください。