2010-08-28 3 views
24

Sto provando a tracciare un grafico log-log che mostra linee di griglia distanziate logaritmicamente su tutti i segni di graduazione visibili lungo il lato inferiore e sinistro della trama. Sono stato in grado di mostrare le griglie alcune utilizzando matplotlib.pyplot.grid(True), ma questo è solo mostrando le linee della griglia per me a potenza di 10 intervalli. Così, ad esempio, ecco cosa Attualmente sto ricevendo:Come visualizzare le linee della griglia logaritmiche su tutte le tacche su un grafico di log-log usando Matplotlib?

Alt text

Mi piacerebbe molto qualcosa con le linee della griglia guardando più come questo, dove la griglia non sono tutti distribuiti uniformemente:

Alt text

Come potrei fare per ottenere questo in Matplotlib?

risposta

28

In sostanza, non vi resta che mettere nel parametro which="both" nel comando griglia in modo che diventi:

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

Altre opzioni per i quali sono 'minori' e 'importante', che sono i principali zecche (che sono mostrati nel tuo grafico) e le zecche minori che ti mancano. Se si desidera utilizzare linee continue, è possibile utilizzare ls="-" come parametro su grid().

Ecco un esempio per i calci:

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() 

che genera:

+2

Ho trovato che sulla mia macchina che utilizza "entrambi" non viene mostrato né il principale né il minore delle linee della griglia. Con alcuni googling, ho trovato questo post: http://www.mailinglistarchive.com/html/[email protected]/2010-06/msg00174.html che sembra suggerire che le versioni precedenti di matplotlib richiedano l'uso " majorminor "invece di" entrambi ". Sai se esiste una documentazione ufficiale di questo cambiamento tra le versioni? Ho dato un'occhiata a http://matplotlib.sourceforge.net/api/api_changes.html, ma sembra che non ci sia alcun accenno a questo ... –

+0

@Bryce Non ho idea di quando quel cambiamento sia entrato in vigore. Generalmente uso solo la versione più recente. In realtà non sono così abile con Matplotlib. –

+0

guardare uno di quei messaggi mi fa pensare che sia successo il 9 giugno 2010. Non sono sicuro di quale versione sarebbe, ma era piuttosto recente. –

4

Come dice @Bryce, nella mia macchina il kwarg corretta è majorminor. Penso che le linee continue con un colore più chiaro possano essere migliori delle linee tratteggiate.

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

funziona per me.