Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menganotasi carta bar berkumpulan dalam Matplotlib dengan berbilang nilai untuk setiap bar?

Bagaimana untuk menganotasi carta bar berkumpulan dalam Matplotlib dengan berbilang nilai untuk setiap bar?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 10:24:30638semak imbas

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

Berbilang Anotasi untuk Carta Bar Berkumpulan

Masalah:
Apabila cuba mencipta carta bar berkumpulan menggunakan Matplotlib, output kelihatan tidak betul .

Contoh Kod:

<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>

Output Jangkaan:

Setiap bar hendaklah diberi anotasi dengan nilai masing-masing.

Penyelesaian:

Kaedah 1: Menggunakan label_bar

<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>

Kaedah 2: Menggunakan anotasi

<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>

Atas ialah kandungan terperinci Bagaimana untuk menganotasi carta bar berkumpulan dalam Matplotlib dengan berbilang nilai untuk setiap bar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn