Ich möchte sowohl horizontale als auch vertikale Gitterlinien in meinem Diagramm erhalten, aber standardmäßig werden nur die horizontalen Gitterlinien angezeigt. Ich verwende eine pandas.DataFrame
SQL-Abfrage in Python, um ein Liniendiagramm mit Datumsangaben auf der x-Achse zu generieren. Ich bin mir nicht sicher, warum sie nicht an den Daten erscheinen, und ich habe versucht, nach einer Antwort darauf zu suchen, konnte aber keine finden.
Alles, was ich zum Zeichnen des Diagramms verwendet habe, ist der einfache Code unten.
data.plot()
grid('on')
data ist der DataFrame, der die Daten und Daten aus der SQL-Abfrage enthält.
Ich habe auch versucht, den folgenden Code hinzuzufügen, aber ich erhalte immer noch die gleiche Ausgabe ohne vertikale Gitterlinien.
ax = plt.axes()
ax.yaxis.grid() # horizontal lines
ax.xaxis.grid() # vertical lines
Irgendwelche Vorschläge?
quelle
data.plot(grid="on")
arbeitete für michAntworten:
Möglicherweise müssen Sie in Ihren Aufrufen ein boolesches Argument angeben, z . B.
ax.yaxis.grid(True)
anstelle vonax.yaxis.grid()
. Da Sie beide verwenden, können Sie sie auch kombinierenax.grid
, was für beide funktioniert, anstatt es für jede Dimension einmal zu tun.Das sollte dich klären.
quelle
plt.show()
ipython --pylab
, undplt.grid(True)
tun Sie dies sofort - sehen Sie das Raster?plt.grid(True)
das leere Diagramm mit den vertikalen und horizontalen Gitterlinien zu erhalten. Ja, es ist seltsam, warum ich dies für mein Liniendiagramm nicht erhalten kann. Ich verwende die neueste verfügbare Version von iPython.plt.gca().xaxis.grid(True)
erwies sich als die Lösung für michquelle
myaxes.grid(which='x')
bei mir mit matplotlib Version 1.4.2 nicht funktioniert ... konnte daswhich
Schlüsselwort überhaupt nicht zum Laufen bringen . Hatmyaxes.xaxis.grid(True)
aber den Trick gemacht und ist konzeptionell besser IMO. Oh, und vergessen Sie nicht die nützlichemyaxes.set_axisbelow(True)
Methode, um das Raster hinter die Daten zu setzen.Gemäß der matplotlib-Dokumentation lautet die Signatur der
Axes
Klassenmethodegrid()
wie folgt:Um Gitterlinien sowohl für die x- als auch für die y-Achse anzuzeigen, können Sie den folgenden Code verwenden:
Diese Methode gibt uns eine genauere Kontrolle darüber, was für Gitterlinien angezeigt werden soll.
quelle
Vielleicht kann dies das Problem lösen: matplotlib, definiere die Größe eines Gitters auf einem Plot
Die Wahrheit ist, dass das Gitter funktioniert, aber es gibt nur ein V-Gitter in 00:00 und kein Gitter in anderen. Ich habe das gleiche Problem, dass es am 1. November unter vielen Tagen nur ein Raster gibt.
quelle
Kurze Antwort (lesen Sie unten für weitere Informationen):
Was Sie tun, ist richtig und es sollte funktionieren.
Da jedoch die X - Achse in Ihrem Beispiel ist ein Datetime - Achse der Hauptstrichmarkierungen (höchstwahrscheinlich) erscheinen nur an den beiden Enden der X - Achse. Die anderen sichtbaren Häkchen sind kleinere Häkchen.
Die
ax.grid()
Methode zeichnet standardmäßig Gitterlinien auf Hauptmarkierungen. Daher wird in Ihrer Handlung nichts angezeigt.Verwenden Sie den folgenden Code, um die Häkchen hervorzuheben. Majors werden blau sein, während Minors rot sind.
Um zu erzwingen, dass die Gitterlinien auch auf den kleinen Häkchen angezeigt werden, übergeben Sie Folgendes
which='minor'
an die Methode:oder verwenden Sie einfach,
which='both'
um sowohl Haupt- als auch Nebengitterlinien zu zeichnen. Und das ist eine elegantere Gitterlinie:quelle
Nur für horizontale Linien
Das hat funktioniert
quelle