Plot logarithmic axes with matplotlib in python
我想用matplotlib绘制一个对数轴的图。
我一直在读文档,但找不到语法。我知道,在情节辩论中,可能有一些简单的东西,比如
示例程序:
1 2 3 4 5 6 7 8 | 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 | ax.set_yscale('log') |
号
您可以使用
1 2 3 4 5 6 7 8 9 10 11 | 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() |
。
首先,混合
这里有一个稍微清理过的代码,只使用
1 2 3 4 5 6 7 8 | 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() |
。
相关功能为
检查我的问题"log"和"symlog"有什么区别?查看Matplotlib提供的一些图形比例示例。
你只需要使用符号学而不是绘图:
1 2 3 4 5 6 7 8 | 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() |
如果要更改对数底数,只需添加:
1 2 | plt.yscale('log',basey=2) # where basex or basey are the bases of log |
。
我知道这有点离题,因为一些评论提到江户十一〔10〕是"最好的"解决方案,我认为应该进行反驳。我不建议在柱状图和条形图中使用
参考文献:http://matplotlib.org/api/pyplot_api.html matplotlib.pyplot.bar
http://matplotlib.org/api/pyplot_api.html matplotlib.pyplot.hist
所以如果你只是简单地使用简单的API,就像我经常使用的那样(我经常在ipython中使用它),那么这很简单
1 2 | yscale('log') plot(...) |
希望这能帮助人们找到一个简单的答案!:)