web-dev-qa-db-fra.com

Comment puis-je afficher des lignes de grille espacées logarithmiquement à tous les ticks sur un tracé log-log à l'aide de Matplotlib?

J'essaie de tracer un graphique log-log qui montre des lignes de grille espacées logarithmiquement à toutes les graduations que vous voyez le long du bas et du côté gauche de l'intrigue. J'ai pu montrer certains quadrillages en utilisant matplotlib.pyplot.grid(True), mais cela ne montre que les quadrillages pour moi à une puissance de 10 intervalles. Donc, à titre d'exemple, voici ce que je reçois actuellement:

Alt text

J'aimerais vraiment quelque chose avec des lignes de grille ressemblant davantage à ceci, où les lignes de grille ne sont pas toutes également espacées:

Alt text

Comment pourrais-je y parvenir dans Matplotlib?

29
Bryce Thomas

Fondamentalement, il vous suffit de mettre le paramètre which="both" Dans la commande grid pour qu'il devienne:

matplotlib.pyplot.grid(True, which="both")

D'autres options sont "mineures" et "majeures" qui sont les graduations majeures (qui sont affichées dans votre graphique) et les graduations mineures qui vous manquent. Si vous voulez des lignes pleines, vous pouvez également utiliser ls="-" Comme paramètre pour grid().

Voici un exemple de coups de pied:

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(0,100,.5)
y = 2*x**3

plt.loglog(x,y)
plt.grid(True,which="both",ls="-")
plt.show()

qui génère:

a log-log graph

37
Justin Peel

Comme le dit @Bryce, sur ma machine, le kwarg correct est majorminor. Je pense que les lignes pleines avec une couleur plus claire peuvent être meilleures que les lignes pointillées.

plt.grid(True,which="majorminor",ls="-", color='0.65')

travaille pour moi.

6
Pablo Navarro