Quero plotar um gráfico com um eixo logarítmico usando matplotlib.
Eu tenho lido os documentos, mas não consigo descobrir a sintaxe. Eu sei que provavelmente é algo simples como 'scale=linear'
nos argumentos da trama, mas não consigo acertar
Programa de exemplo:
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
fonte
fonte
semilogy()
. Além disso, é mais fácil usar diretamentepyplot.yscale()
do que usarax.set_yscale('log')
, pois não há necessidade de obter oax
objeto (que nem sempre está disponível imediatamente).loglog()
ou no eixo X única tentarsemilogx()
ax
objeto explícito do que usar opyplot
que pode ser aplicado apenas aos eixos que você deseja.Primeiro de tudo, não é muito arrumado misturar
pylab
epyplot
codificar. Além disso, o estilo pyplot é preferido em vez de usar o pylab .Aqui está um código ligeiramente limpo, usando apenas
pyplot
funções:A função relevante é
pyplot.yscale()
. Se você usar a versão orientada a objetos, substituí-lo pelo métodoAxes.set_yscale()
. Lembre-se de que você também pode alterar a escala do eixo X usandopyplot.xscale()
(ouAxes.set_xscale()
).Verifique minha pergunta Qual é a diferença entre 'log' e 'symlog'? para ver alguns exemplos das escalas gráficas oferecidas pelo matplotlib.
fonte
pyplot.semilogy()
é mais direto.Você simplesmente precisa usar a semilogia em vez do enredo:
fonte
se você quiser alterar a base do logaritmo, basta adicionar:
fonte
Eu sei que isso é um pouco fora de tópico, já que alguns comentários mencionaram a
ax.set_yscale('log')
solução mais "agradável" que eu pensei que poderia ser uma refutação. Eu não recomendaria o usoax.set_yscale('log')
de histogramas e gráficos de barras. Na minha versão (0.99.1.1), encontro alguns problemas de renderização - não tenho certeza de quão geral é esse problema. No entanto, bar e hist têm argumentos opcionais para definir a escala y para logar, o que funciona bem.referências: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist
fonte
Portanto, se você está simplesmente usando a API não sofisticada, como eu frequentemente (uso muito no ipython), isso é simplesmente
Espero que isso ajude alguém que procura uma resposta simples! :).
fonte
Você pode usar o código abaixo:
fonte