在python中使用matplotlib绘制对数轴

我想使用matplotlib绘制一个对数轴的图形。 html

我一直在阅读文档,但没法弄清楚语法。 我知道在绘图参数中可能很简单,例如'scale=linear' ,但我彷佛没法正确理解 python

示例程序: api

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

#1楼

您可使用Axes.set_yscale方法。 这样,您能够在建立“ Axes对象以后更改比例。 这也将容许您构建一个控件,让用户根据须要选择比例。 函数

要添加的相关行是: spa

ax.set_yscale('log')

您可使用'linear'切换回线性刻度。 您的代码以下所示: .net

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)

ax.set_yscale('log')

pylab.show()

结果图


#2楼

我知道这有点ax.set_yscale('log') ,由于一些评论提到ax.set_yscale('log')是“最好的”解决方案,我认为多是反驳。 我不建议将ax.set_yscale('log')用于直方图和条形图。 在个人版本(0.99.1.1)中,我遇到了一些渲染问题-不肯定此问题的广泛性。 可是,bar和hist都具备可选参数,能够将y比例设置为log,这很好用。 code

参考: http : //matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar htm

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


#3楼

首先,混合pylabpyplot代码不是很整洁。 并且, pyplot样式比使用pylab更为可取ip

这是一个仅使用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()

相关函数是pyplot.yscale() 。 若是使用面向对象的版本,则用方法Axes.set_yscale()替换它。 请记住,您还可使用pyplot.xscale() (或Axes.set_xscale() )更改X轴的比例。

检查个人问题'log'和'symlog'有什么区别? 查看matplotlib提供的图形比例的一些示例。


#4楼

所以,若是您只是像我常常那样使用简单的API(我在ipython中常常使用它),那么这很简单

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

但愿这能够帮助寻找简单答案的人! :)。


#5楼

若是要更改对数的底数,只需添加:

plt.yscale('log',basey=2) 
# where basex or basey are the bases of log
相关文章
相关标签/搜索