Plot Garis Matplotlib tidak menunjukkan Label
Saya memiliki Set Data berikut dari mana saya ingin mendapatkan plot garis. Plotnya benar tetapi labelnya hilang meskipun saya memberikan nama label di kode. Beri saya metode untuk menyertakan label. Juga jika saya mencoba untuk memasukkan xlabel dan ylabel dalam kode itu memberi saya kesalahanAttributeError: 'Line2D' object has no property 'xlabel'
Res Dataframe
UserId | date |-7|-6|-5|-4|-3|-2|-1|0 |1 |2 |3 |4 |5 |6 |7
1 2009-10-17 17:38:32.590 |0 |0 |0 |0 |0 |0 |1 |0 |1 |0 |0 |0 |0 |0 |0
2 2009-10-19 00:37:23.067 |0 |0 |0 |0 |0 |1 |1 |0 |1 |0 |0 |0 |0 |0 |0
3 2009-10-20 08:37:14.143 |0 |0 |0 |0 |0 |0 |1 |0 |0 |0 |0 |0 |0 |0 |0
4 2009-10-21 18:07:51.247 |0 |0 |0 |0 |0 |0 |1 |0 |0 |0 |0 |0 |0 |0 |0
5 2009-10-22 21:25:24.483 |0 |0 |0 |0 |0 |0 |1 |0 |0 |0 |0 |0 |0 |0 |0
Kode
badges = ["A", "B", "C"]
for badge in badges:
res.iloc[:,2:].mean().plot(kind='line', label = badge)
Keluaran
Ini adalah keluaran yang diperoleh dari kode ini. Saya ingin label untuk ketiga garis tersebut ada di grafik. Bersamaan dengan itu saya ingin menambahkan xlabel = "Week" dan ylabel = "Mean Posts" pada sumbu.
Jawaban
Fungsi dasar yang dibutuhkan legenda layar dan sumbu label plt.legend, plt.xlabeldan plt.ylabel. Lihat di bawah untuk contoh mandiri. Sulit untuk menjadi lebih spesifik tanpa melihat semua bagian yang relevan dari kode Anda.
import matplotlib.pyplot as plt
x = [1, 2, 3]
y1 = [4, 5, 6]
y2 = [7, 8, 9]
plt.plot(x, y1, "b", label="y1")
plt.plot(x, y2, "r", label="y2")
plt.legend()
plt.xlabel("x")
plt.ylabel("y")
plt.savefig("temp")
Anda dapat menyimpan semua parameter seperti plt.legend(), plt.xlabel, plt.ylabel, plt.xticksdll di luar forlingkaran.
Coba ini:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
badges = ["A", "B", "C"]
for badge in badges:
res.iloc[:,2:].mean().plot(kind='line', label = badge)
plt.ylabel('y',size=20,weight='bold')
plt.xlabel('x',size=20,weight='bold')
plt.legend(frameon=False, prop={'size':15})
plt.show()
Selain itu, jika Anda menyukai 3 plot terpisah untuk masing-masing, badgepindahkan bagian tersebut dari dalam plt.ylabel()ke plt.show()dalam loop.
Argumen xlabel atau ylabel hanya tersedia di pandas versi 1.1.0. atau diatas. lihat Dokumentasihttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html#pandas.DataFrame.plot
Alasan Anda mendapatkan AttributeError: objek 'Line2D' tidak memiliki properti 'xlabel' adalah karena Anda mungkin memiliki versi panda yang lebih rendah.
Anda dapat memeriksa versi pandas dengan menjalankan perintah berikut
import pandas as pd
print(pd.__version__)
Sekarang untuk meletakkan x_label / y_label Anda dapat melakukan hal berikut:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
for badge in badges:
res.iloc[:,2:].mean().plot(kind='line', label = badge, ax=ax)
ax.set_ylabel('y')
ax.set_xlabel('x')
ax.legend()
plt.show()