1. 程式人生 > 實用技巧 >作圖-線性座標與對數座標

作圖-線性座標與對數座標

線性座標在顯示有較大區值範圍的\(x\)\(y\)時(\(x\)\(y\)的取值範圍有很大尺度的差異)不能很清楚地將兩者的對應關係表現出來。對於函式\(y=log_{10}x, x\in[1, 100000]\)線上性座標下如圖一所示。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 100000)
y = np.log10(x)

plt.plot(
    x, 
    y, 
    color='k', 
    lw=2)
plt.title('Linear')
plt.xlabel('x')
plt.ylabel('log(x)')


圖一,對數函式線上性座標下的影象。

很顯然,對於\(x<1000\)對應的\(y\)是無法通過圖來很清楚地確定的。通過對\(x\)進行對數轉換則可以更加清楚地表示出\(x\)\(y\)的關係。圖二即為上述公式在對數座標下的圖形。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 100000)
y = np.log10(x)

plt.plot(
    x, 
    y, 
    color='k', 
    lw=2)
plt.title('x-log')
plt.xlabel('x')
plt.ylabel('log(x)')
plt.xscale('log')


圖二,對數函式在對\(x\)軸進行對數轉換後的影象。

而當對\(x\)\(y\)同時進行對數轉換之後,相應的圖形展示為圖三。因此通常只需要將範圍尺度較大的變數進行對數變換即可。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 100000)
y = np.log10(x)

plt.plot(
    x, 
    y, 
    color='k', 
    lw=2)
plt.title('xy-log')
plt.xlabel('x')
plt.ylabel('log(x)')
plt.xscale('log')
plt.yscale('log')


圖三,對數函式在雙對數座標下的影象。

參考:

  1. https://matplotlib.org/api/_as_gen/matplotlib.pyplot.xscale.html#matplotlib.pyplot.xscale
  2. https://zhuanlan.zhihu.com/p/43673909