Rumah > pembangunan bahagian belakang > Tutorial Python > 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
Lepaskan: 2024-10-27 10:24:30
asal
742 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan