Apabila bekerja dengan plot bar Pandas, selalunya wajar untuk memaparkan nilai berangka yang diwakilinya. Artikel ini menangani isu bar anotasi dengan nilai data bulat daripada DataFrame.
Masalah:
Pertimbangkan DataFrame (df):
A B value1 0.440922 0.911800 value2 0.588242 0.797366
Matlamatnya adalah untuk menganotasi setiap bar dengan nilai bulat yang sepadan, seperti yang digambarkan dalam imej di bawah:
[Imej plot bar dengan nilai beranotasi]
Pendekatan Tidak Cekap:
Satu pendekatan biasa untuk anotasi ialah menggunakan fungsi anotasi . Walau bagaimanapun, seperti yang ditunjukkan oleh sampel kod di bawah, pendekatan ini meletakkan anotasi berpusat pada tanda-x:
ax = df.plot(kind='bar') for idx, label in enumerate(list(df.index)): for acc in df.columns: value = np.round(df.ix[idx][acc], decimals=2) ax.annotate(value, (idx, value), xytext=(0, 15), textcoords='offset points')
Penyelesaian Optimum:
Penyelesaian yang lebih cekap adalah dengan dapatkan data daripada tampalan paksi:
for p in ax.patches: ax.annotate(str(p.get_height()), (p.get_x() * 1.005, p.get_height() * 1.005))
Kod ini mengekstrak ketinggian bar dan meletakkan anotasi di atas sedikit bar untuk memusatkannya.
Penyesuaian:
Untuk menyesuaikan anotasi, seseorang boleh melaraskan pemformatan rentetan dan mengimbangi. Contohnya:
for p in ax.patches: ax.annotate("{:.2f}".format(p.get_height()), (p.get_x() + p.get_width() / 2, p.get_height() * 1.005))
Ini memusatkan anotasi pada setiap bar dan memformat ketinggian kepada dua tempat perpuluhan.
Atas ialah kandungan terperinci Bagaimana untuk Menganotasi Plot Bar Pandas dengan Nilai Data dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!