Matplotlib中調整坐標軸的比例

Matplotlib中,可以調整坐標軸x和y之間的相對比例。每個坐標軸坐標軸也可以按照一定方式縮放。除了等比例,也可以按對數方式縮放,這在很多時候都非常有用。特別是變數之間呈現指數或者冪的關係時,這樣反而更容易看出來。

這次我們討論如何利用pyplot中的函數實現相應的效果。

函數axis

首先我們來看函數axis對應的參數,以及參數的效果。axis函數整體來說,主要影響坐標軸的行為。比方說下圖第一幅子圖,使用了off這個參數。

axis(off)

其作用就是阻止顯示坐標軸,只有曲線。其他一些參數都在下圖的標題當中,大家可以對應文檔和下圖的效果選擇合適的參數。比方參數square就是形成一幅方圖。

設定坐標軸以對數方式收縮

如果我們猜測變數 xy 之間滿足如下關係: y=e^x

那麼為了驗證這一點,通常我們對函數兩邊取對數那麼就有: log(y)propto x 。所以如果對數據y取對數的話,我們看到的就是一條直線。這反映了數量之間的指數關係。

那麼實現方法對y取對數方法有三種:

  1. 自行對y取log,然後用plot畫圖;
  2. 利用函數semilogy畫圖,相應需要對x取log畫圖,有另外一個函數semilogx;
  3. 利用pyplot中的yscale(xscale)對相應的變數取log。

下面這段代碼就是對上述函數的三種不同畫法。即:

  • 原始函數 y=e^{x} ;
  • 利用semilogy
  • 利用yscale(log)

代碼和結果如下。

from pylab import *figure(figsize=(3,9))x=linspace(0,5,11)y=exp(x)subplot(3,1,1)title(r$y=e^{x}$)plot(x,y,b-x)subplot(3,1,2)title(semilogy)semilogy(x,y)subplot(3,1,3)title("yscale(log)")yscale(log)plot(x,y)show()

同樣,如果遇到變數之間為冪函數的關係,例如 y=x^2 。那麼我們可以分別對公式兩邊去對數得 log(y)propto log(x) 那麼可以利用loglog函數或者xscale和yscale來實現。過程類似以上的內容,這裡只插入代碼和結果。

from pylab import *figure(figsize=(3,10))x=linspace(0,5,11)y=x**2subplot(3,1,1)title(r$y=x^2$)plot(x,y,b-x)subplot(3,1,2)title(loglog)loglog(x,y)subplot(3,1,3)title("xscale(log),yscale(log)")yscale(log)xscale(log)plot(x,y)show()

推薦閱讀:

Matplotlib 可視化系列一
matplotlib.pyplot.imshow如何顯示灰度圖?
matplotlib & visdom 的圖片顯示問題
基於matplotlib的2D/3D抽象網格和能量曲線繪製程序
python matplotlib中axes與axis的區別?

TAG:Matplotlib | numpy | 數據分析 |