Matplotlib Çizgi Grafiği Etiketleri göstermiyor
Çizgi grafiğini elde etmek istediğim aşağıdaki Veri Kümesine sahibim. Çizim doğru ancak kodda etiket adını vermeme rağmen etiketler eksik. Lütfen etiketleri eklemek için bana bir yöntem sağlayın. Ayrıca koda xlabel ve ylabel eklemeye çalışırsam hata veriyorAttributeError: 'Line2D' object has no property 'xlabel'
Veri çerçevesi çözünürlüğü
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
Kod
badges = ["A", "B", "C"]
for badge in badges:
res.iloc[:,2:].mean().plot(kind='line', label = badge)
Çıktı
Bu, bu koddan elde edilen çıktıdır. Üç çizginin hepsinin etiketlerinin grafikte mevcut olmasını istiyorum. Bununla birlikte, eksene xlabel = "Hafta" ve ylabel = "Ortalama Mesajlar" eklemek istiyorum.
Yanıtlar
Ekran Efsaneye gerekli temel fonksiyonlar ve eksen etiketleri vardır plt.legend, plt.xlabelve plt.ylabel. Bağımsız bir örnek için aşağıya bakın. Kodunuzun tüm ilgili kısımlarını görmeden daha spesifik olmak zordur.
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")
Aşağıdaki gibi tüm parametreleri tutabilir plt.legend(), plt.xlabel, plt.ylabel, plt.xticksdışarıda vb fordöngü.
Bunu dene:
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()
Her biri için 3 ayrı araziler isterseniz Üstelik badgeo andan itibaren bölüm taşı plt.ylabel()için plt.show()döngü içinde.
Xlabel veya ylabel argümanı yalnızca Pandalar 1.1.0 sürümünde mevcuttur. ya da üzerinde. Belgelere bakınhttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html#pandas.DataFrame.plot
AttributeError'ı almanızın nedeni : 'Line2D' nesnesinin 'xlabel' özelliği yoktur çünkü pandaların daha düşük bir sürümüne sahip olabilirsiniz.
aşağıdaki komutu çalıştırarak pandaların sürümünü kontrol edebilirsiniz
import pandas as pd
print(pd.__version__)
Şimdi x_label / y_label koymak için şunları yapabilirsiniz:
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()