Matplotlib Çizgi Grafiği Etiketleri göstermiyor

Sep 25 2020

Ç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

JakeLevi Sep 25 2020 at 20:59

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")

Grayrigel Sep 25 2020 at 21:07

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.

AjayVerma Sep 25 2020 at 21:36

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()