Problem:
Beim Versuch, ein gruppiertes Balkendiagramm mit Matplotlib zu erstellen, erscheint die Ausgabe falsch .
Codebeispiel:
<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>
Erwartete Ausgabe:
Jeder Balken sollte mit seinem jeweiligen Wert versehen sein.
Lösung:
Methode 1: bar_label verwenden
<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>
Methode 2: annotate verwenden
<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>
Das obige ist der detaillierte Inhalt vonWie kommentiere ich ein gruppiertes Balkendiagramm in Matplotlib mit mehreren Werten für jeden Balken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!