Matplotlib-Liniendiagramm ohne Beschriftung
Ich habe den folgenden Datensatz, aus dem ich das Liniendiagramm erhalten möchte. Die Darstellung ist korrekt, aber die Beschriftungen fehlen, obwohl ich den Beschriftungsnamen im Code angegeben habe. Bitte geben Sie mir eine Methode zum Einfügen der Etiketten. Auch wenn ich versuche, xlabel und ylabel in den Code aufzunehmen, wird mir ein Fehler angezeigtAttributeError: 'Line2D' object has no property 'xlabel'
Datenrahmen res
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
Code
badges = ["A", "B", "C"]
for badge in badges:
res.iloc[:,2:].mean().plot(kind='line', label = badge)
Ausgabe
Dies ist die Ausgabe dieses Codes. Ich möchte, dass die Beschriftungen für alle drei Linien in der Grafik vorhanden sind. Außerdem möchte ich xlabel = "Week" und ylabel = "Mean Posts" auf der Achse hinzufügen.
Antworten
Die Grundfunktionen erforderlich ist, um Display - Legende und Achsenbeschriftungen sind plt.legend, plt.xlabelund plt.ylabel. Unten finden Sie ein eigenständiges Beispiel. Es ist schwierig, genauer zu sein, ohne alle relevanten Teile Ihres Codes zu sehen.
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")
Sie können alle Parameter halten wie plt.legend(), plt.xlabel, plt.ylabel, plt.xticksusw. außerhalb der forSchleife.
Versuche dies:
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()
Außerdem, wenn Sie 3 separate Plots wie für jeden badgedann den Abschnitt bewegen sich von plt.ylabel()zu plt.show()innerhalb der Schleife.
Das Argument xlabel oder ylabel ist nur in pandas Version 1.1.0 verfügbar. oder höher. Siehe Dokumentationhttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html#pandas.DataFrame.plot
Der Grund, warum Sie AttributeError erhalten: Das Objekt 'Line2D' hat keine Eigenschaft 'xlabel', liegt darin, dass Sie möglicherweise eine niedrigere Version von Pandas haben.
Sie können die Pandas-Version überprüfen, indem Sie den folgenden Befehl ausführen
import pandas as pd
print(pd.__version__)
Zum Setzen von x_label / y_label können Sie nun Folgendes tun:
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()