Quiero trazar un gráfico con un eje logarítmico usando matplotlib.
He estado leyendo los documentos, pero no puedo entender la sintaxis. Sé que probablemente sea algo simple como 'scale=linear'
en los argumentos de la trama, pero parece que no puedo hacerlo bien
Programa de muestra:
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()
python
matplotlib
scale
logarithm
Max Ghenis
fuente
fuente
semilogy()
. Además, es más fácil de usar directamentepyplot.yscale()
que de usarax.set_yscale('log')
, ya que no es necesario obtener elax
objeto (que no siempre está disponible de inmediato).loglog()
o solo en el eje x intentesemilogx()
ax
objeto explícito que usarpyplot
que solo podría aplicarse a los ejes que desea.En primer lugar, no es muy ordenado mezclar
pylab
ypyplot
codificar. Además, se prefiere el estilo pyplot sobre el uso de pylab .Aquí hay un código ligeramente limpio, que usa solo
pyplot
funciones:La función relevante es
pyplot.yscale()
. Si usa la versión orientada a objetos, reemplácela por el métodoAxes.set_yscale()
. Recuerde que también puede cambiar la escala del eje X, usandopyplot.xscale()
(oAxes.set_xscale()
).Verifique mi pregunta ¿Cuál es la diferencia entre 'log' y 'symlog'? para ver algunos ejemplos de las escalas gráficas que ofrece matplotlib.
fuente
pyplot.semilogy()
Es más directo.Simplemente necesita usar la semilogía en lugar de la trama:
fuente
Si desea cambiar la base del logaritmo, simplemente agregue:
fuente
Sé que esto está un poco fuera de tema, ya que algunos comentarios mencionaron
ax.set_yscale('log')
que es la solución "más agradable", pensé que podría deberse una refutación. No recomendaría usarax.set_yscale('log')
para histogramas y gráficos de barras. En mi versión (0.99.1.1) me encuentro con algunos problemas de representación, no estoy seguro de cuán general es este problema. Sin embargo, tanto bar como hist tienen argumentos opcionales para establecer que la escala y se registre, lo que funciona bien.referencias: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist
fuente
Entonces, si simplemente está utilizando la API poco sofisticada, como lo hago a menudo (lo uso mucho en ipython), entonces esto es simplemente
¡Espero que esto ayude a alguien que busca una respuesta simple! :).
fuente
Puedes usar el siguiente código:
fuente