Je souhaite obtenir à la fois des lignes de grille horizontales et verticales sur mon tracé, mais seules les lignes de grille horizontales apparaissent par défaut. J'utilise un pandas.DataFrame
d'une requête SQL dans python pour générer un tracé de lignes avec des dates sur l'axe des abscisses. Je ne sais pas pourquoi elles n'apparaissent pas aux dates et j'ai essayé de rechercher une réponse à cela, mais ne pouvait pas en trouver un.
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 la même sortie sans lignes de grille verticales.
ax = plt.axes()
ax.yaxis.grid() # horizontal lines
ax.xaxis.grid() # vertical lines
Aucune suggestion?
Vous devrez peut-être donner un argument booléen dans vos appels, par exemple. utilisez ax.yaxis.grid(True)
au lieu de ax.yaxis.grid()
. De plus, puisque vous utilisez les deux, vous pouvez les combiner en ax.grid
, qui fonctionne sur les deux, plutôt que de le faire une fois pour chaque dimension.
ax = plt.gca()
ax.grid(True)
Cela devrait vous régler.
plt.gca().xaxis.grid(True)
s'est avéré être la solution pour moi
Selon la documentation de matplotlib , La signature de la méthode Axes
class grid()
est la suivante:
Axes.grid (b = None, qui = 'majeur', axis = 'les deux', ** kwargs)
Activez ou désactivez les grilles d’axe.
which
peut être ‘majeur’ (par défaut), ‘mineur’ ou ‘les deux’ pour contrôler si les grilles majeures de ticks, les grilles mineures de ticks ou les deux sont affectées.
axis
peut être ‘les deux’ (par défaut), ‘x’ ou ‘y’ pour contrôler l’ensemble des lignes de la grille dessinées.
Ainsi, pour afficher les lignes de la grille des axes x et y, nous pouvons utiliser le code suivant:
ax = plt.gca()
ax.grid(which='major', axis='both', linestyle='--')
Cette méthode nous donne un contrôle plus précis sur ce qu'il faut afficher pour les lignes de la grille.
peut-être que cela peut résoudre le problème: matplotlib, définit la taille d'une grille sur un tracé
ax.grid(True, which='both')
La vérité est que la grille fonctionne, mais il n'y a qu'une seule v-grille à 00:00 et aucune grille dans les autres. Je rencontre le même problème qu'il n'y a qu'une seule grille le 1er novembre sur plusieurs jours.
Pour seulement des lignes horizontales
ax = plt.axes()
ax.yaxis.grid() # horizontal lines
Cela a fonctionné