Je veux obtenir des lignes de grille horizontales et verticales sur mon tracé, mais seules les lignes de grille horizontales apparaissent par défaut. J'utilise pandas.DataFrame
une requête SQL en python pour générer un graphique linéaire avec des dates sur l'axe des x. Je ne sais pas pourquoi ils n'apparaissent pas sur les dates et j'ai essayé de rechercher une réponse à cela mais je n'ai pas pu en trouver.
Tout ce que j'ai utilisé pour tracer le graphique est le code simple ci-dessous.
data.plot()
grid('on')
data est le DataFrame qui contient les dates et les données de la requête SQL.
J'ai également essayé d'ajouter le code ci-dessous mais j'obtiens toujours le même résultat sans lignes de grille verticales.
ax = plt.axes()
ax.yaxis.grid() # horizontal lines
ax.xaxis.grid() # vertical lines
Aucune suggestion?
python
matplotlib
pandas
Osmond Bishop
la source
la source
data.plot(grid="on")
travaillé pour moiRéponses:
Vous devrez peut-être donner un argument booléen dans vos appels, par exemple utiliser à la
ax.yaxis.grid(True)
place deax.yaxis.grid()
. De plus, comme vous les utilisez tous les deux, vous pouvez les combinerax.grid
, ce qui fonctionne sur les deux, plutôt que de le faire une fois pour chaque dimension.Cela devrait vous trier.
la source
plt.show()
ipython --pylab
, et faites-leplt.grid(True)
immédiatement - voyez-vous la grille?plt.grid(True)
obtenir le graphique vide avec les lignes de grille verticales et horizontales, donc oui, il est étrange que je ne puisse pas obtenir cela pour mon tracé linéaire. J'utilise la dernière version disponible d'iPython.plt.gca().xaxis.grid(True)
s'est avéré être la solution pour moila source
myaxes.grid(which='x')
ne fonctionnait pas pour moi avec matplotlib version 1.4.2 ... ne pouvait pas du tout faire fonctionner lewhich
mot - clé. Cependant, amyaxes.xaxis.grid(True)
fait l'affaire et est conceptuellement mieux IMO. Oh, et n'oubliez pas lamyaxes.set_axisbelow(True)
méthode utile pour mettre la grille derrière les données.Selon la documentation de matplotlib , la signature de la méthode de
Axes
classegrid()
est la suivante:Ainsi, afin d'afficher les lignes de la grille pour l'axe x et l'axe y, nous pouvons utiliser le code suivant:
Cette méthode nous donne un contrôle plus fin sur ce qu'il faut afficher pour les lignes de la grille.
la source
peut-être que cela peut résoudre le problème: matplotlib, définir la taille d'une grille sur un tracé
La vérité est que la grille fonctionne, mais il n'y a qu'une seule v-grid à 00:00 et aucune grille dans les autres. Je rencontre le même problème qu'il n'y a qu'une seule grille au 1er novembre sur plusieurs jours.
la source
Réponse courte (lisez ci-dessous pour plus d'informations):
Ce que vous faites est correct et cela devrait fonctionner.
Cependant, puisque l' axe X dans votre exemple est un axe DateHeure, les graduations Majeures (très probablement) n'apparaissent qu'aux deux extrémités de l'axe X. Les autres graduations visibles sont des graduations mineures .
La
ax.grid()
méthode, par défaut, dessine des lignes de quadrillage sur les graduations principales. Par conséquent, rien n'apparaît dans votre intrigue.Utilisez le code ci-dessous pour mettre en surbrillance les graduations. Les majors seront bleus tandis que les mineurs seront rouges.
Maintenant, pour forcer les lignes de la grille à apparaître également sur les graduations mineures, passez le
which='minor'
à la méthode:ou utilisez simplement
which='both'
pour dessiner des lignes de grille majeures et mineures. Et ceci une ligne de grille plus élégante:la source
Pour uniquement les lignes horizontales
Cela a fonctionné
la source