我想使用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()
您可使用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()
我知道這有點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 對象
首先,混合pylab
和pyplot
代碼不是很整潔。 並且, 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提供的圖形比例的一些示例。
所以,若是您只是像我常常那樣使用簡單的API(我在ipython中常常使用它),那麼這很簡單
yscale('log') plot(...)
但願這能夠幫助尋找簡單答案的人! :)。
若是要更改對數的底數,只需添加:
plt.yscale('log',basey=2) # where basex or basey are the bases of log