Bagaimana untuk mencipta carta bar berkumpulan dengan jarak yang betul dan anotasi yang tepat menggunakan Matplotlib dan Pandas?

Susan Sarandon
Lepaskan: 2024-11-03 12:23:29
asal
1044 orang telah melayarinya

How to create a grouped bar chart with correct spacing and accurate annotations using Matplotlib and Pandas?

Memplot dan Menganotasi Carta Bar Berkumpulan

Analisis Ralat

Kod yang disediakan untuk mencipta carta bar berkumpulan dalam Python menggunakan Matplotlib mengandungi ralat. Khususnya, nilai w tidak betul dan peletakan anotasi menggunakan autolabel tidak sejajar.

Nilai w Dibetulkan:

Nilai w sepatutnya 0.8 / 3 sebaliknya sebanyak 0.8 untuk memastikan jarak yang betul antara bar.

Menggunakan plot Panda untuk Memplot

Pendekatan yang lebih mudah untuk memplot carta bar berkumpulan ialah menggunakan kaedah plot panda DataFrames. Kaedah ini membolehkan plot dan anotasi yang mudah.

Penempatan Anotasi Yang Dipertingkat

Untuk meletakkan anotasi dengan tepat di atas bar, gunakan kod berikut:

for p in ax.patches:
    ax.annotate(f'{p.get_height():0.2f}', (p.get_x() + p.get_width() / 2., p.get_height()), ha = 'center', va = 'center', xytext = (0, 10), textcoords = 'offset points')
Salin selepas log masuk

Di sini, offset mata ditetapkan kepada (0, 10) untuk menjajarkan anotasi terus di atas pusat bar.

Kod Lengkap

Kod yang diperbetulkan dan dipertingkatkan adalah seperti berikut:

import pandas as pd
import matplotlib.pyplot as plt

df = pandas.DataFrame({
    'Very interested': [1332, 1688, 429, 1340, 1263, 1629],
    'Somewhat interested': [729, 444, 1081, 734, 770, 477],
    'Not interested': [127, 60, 610, 102, 136, 74]
    }, index=['Big Data (Spark / Hadoop)', 'Data Analysis / Statistics', 'Data Journalism', 'Data Visualization', 'Deep Learning', 'Machine Learning'])

colors = ['#5cb85c', '#5bc0de', '#d9534f']
fig, ax = plt.subplots(figsize=(20, 8))

ax.set_ylabel('Percentage', fontsize=14)
ax.set_title(
    "The percentage of the respondents' interest in the different data science Area",
    fontsize=16)
ax.set_xticklabels(ax.get_xticklabels(), rotation=0)

df.plot.bar(ax=ax, color=colors)

for p in ax.patches:
    ax.annotate(f'{p.get_height():0.2f}', (p.get_x() + p.get_width() / 2., p.get_height()), ha='center', va='center', xytext=(0, 10), textcoords='offset points')

plt.show()
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk mencipta carta bar berkumpulan dengan jarak yang betul dan anotasi yang tepat menggunakan Matplotlib dan Pandas?. 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