在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
相關文章
相關標籤/搜索