python3 - Traccia gli assi logaritmici con matplotlib in python




python plot library (4)

Voglio tracciare un grafico con un asse logaritmico usando matplotlib.

Ho letto i documenti, ma non riesco a capire la sintassi. So che probabilmente è qualcosa di semplice come 'scale=linear' negli argomenti del plot, ma non riesco a farlo bene

Programma di esempio:

import pylab
import matplotlib.pyplot as plt
a = [pow(10, i) for i in range(10)]
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)

line, = ax.plot(a, color='blue', lw=2)
pylab.show()

Hai semplicemente bisogno di usare la semilogy invece della trama:

from pylab import *
import matplotlib.pyplot  as pyplot
a = [ pow(10,i) for i in range(10) ]
fig = pyplot.figure()
ax = fig.add_subplot(2,1,1)

line, = ax.semilogy(a, color='blue', lw=2)
show()

Prima di tutto, non è molto ordinato mescolare codice pylab e pyplot . Inoltre, lo stile pyplot è preferito rispetto all'utilizzo di pylab .

Ecco un codice leggermente ripulito, utilizzando solo pyplot funzioni di pyplot :

from matplotlib import pyplot

a = [ pow(10,i) for i in range(10) ]

pyplot.subplot(2,1,1)
pyplot.plot(a, color='blue', lw=2)
pyplot.yscale('log')
pyplot.show()

La funzione rilevante è pyplot.yscale() . Se si utilizza la versione orientata agli oggetti, sostituirla con il metodo Axes.set_yscale . Ricorda che puoi anche cambiare la scala dell'asse X, usando pyplot.xscale() (o Axes.set_xscale() ).

Controlla la mia domanda Qual è la differenza tra "log" e "symlog"? per vedere alcuni esempi delle scale del grafico offerte da matplotlib.


Quindi se stai semplicemente usando l'API non sofisticata, come sono spesso io (lo uso molto in ipython), allora questo è semplicemente

yscale('log')
plot(...)

Spero che questo aiuti qualcuno a cercare una risposta semplice! :).


So che questo è leggermente fuori tema, dal momento che alcuni commenti menzionano ax.set_yscale('log') come soluzione "più bella", ho pensato che una confutazione potesse essere dovuta. Non consiglierei di usare ax.set_yscale('log') per istogrammi e grafici a barre. Nella mia versione (0.99.1.1) mi imbatto in alcuni problemi di rendering - non sono sicuro di quanto sia generale questo problema. Comunque sia bar che hist hanno argomenti opzionali per impostare la scala y da registrare, che funziona bene.

riferimenti: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist





logarithm