Matplotlib - 對數座標軸



什麼是對數座標軸?

Matplotlib 中的對數座標軸允許在繪圖中使用對數刻度而不是線性刻度來表示一個或兩個座標軸。當處理跨越多個數量級的廣泛資料值時,這種縮放方式特別有用。與其像線性縮放那樣平等地表示每個單位,我們可以使用對數縮放,它根據數量級來表示相等的間隔。

在比較線性座標軸和對數座標軸之前,讓我們先回顧一下線性座標軸。

什麼是線性座標軸?

在繪圖和圖形的上下文中,線性座標軸指的是標準的笛卡爾座標系,其中座標軸以線性或算術刻度表示。在這個系統中,我們有以下內容。

X 軸和 Y 軸 - 水平軸通常是 X 軸,表示一個變數,而垂直軸是 Y 軸,表示另一個變數。

等間距 - 每個座標軸上的線性刻度表示繪製值中的相等增量。例如,線上性刻度上,0 到 1 之間的距離與 5 到 6 之間的距離相同。

比例表示 - 軸上的每個單位都直接對應於表示值的單位變化。例如,從 10 移動到 11 表示與從 20 移動到 21 相同的增加。

直線 - 變數之間的關係線上性刻度上表示為直線。對於線性關係,當連線繪製的資料點時,它們形成一條直線。

適用性 - 線性座標軸適用於視覺化變數之間關係為線性或表示的值在整個刻度範圍內變化不大的資料。

線性與對數刻度

線性刻度和對數刻度是在繪圖中表示軸上資料的兩種不同方式,每種方式都具有適合不同型別的資料分佈和視覺化的獨特特徵。

  線性座標軸 對數座標軸
縮放 這使用了線性縮放;軸上每個值之間的距離是統一的,表示繪製數量的相等增量。 對數縮放根據數量級而不是線性增量來表示值。軸上的每個刻度都對應於基值(例如,10 或 e)的冪。
間隔 軸上的單位直接對應於資料值。例如,線上性刻度 0 到 10 上,每個單位(例如,從 0 到 1,1 到 2)表示相等的增量 1。 在對數刻度上,軸上的相等距離表示乘法因子而不是加法因子。例如,在從 1 到 100 的對數刻度上,距離可能表示 10 的冪(1、10、100)。
表示 線性座標軸通常用於繪製點之間的關係最好用線性進展來描述的資料。 對數座標軸適用於跨越多個數量級的資料,例如指數增長或衰減。它們壓縮了大範圍的值,使它們在視覺上易於管理。
何時使用 通常用於顯示變數之間線性關係的資料或資料值範圍不大的資料。 對於視覺化跨越多個數量級的資料很有用,尤其是在處理指數增長或衰減、頻率分佈或資料集中在某些範圍內的異常值時。
繪圖 Image Image

對數刻度的型別

對數座標軸中有多種型別的對數刻度可用。讓我們一一檢視。

對數 X 軸

繪圖中的對數 X 軸指的是 X 軸上的刻度是對數而不是線性的。這種縮放將 X 軸上的資料表示從線性進展轉換為對數進展,使其適合於視覺化跨越多個數量級或沿 X 軸表現出指數行為的資料。

對數 X 軸的特徵

縮放方法 - 與線性縮放中沿 X 軸以相等增量表示值不同,對數 X 軸根據基值(例如,10 或 e)的冪來表示值。

不等間距 - 軸上的相等距離對應於乘法因子或數量級,而不是固定間隔。

用例 - 當處理涵蓋廣泛值的資料集(例如指數增長、大時間跨度或資料分佈集中在特定範圍內的異常值)時,對數 X 軸非常有用。

示例

在此示例中,plt.xscale('log') 函式將 X 軸設定為對數刻度。它將 X 軸從線性刻度轉換為對數刻度,從而能夠更好地視覺化資料,尤其是在處理指數或範圍廣泛的 X 值時。

import matplotlib.pyplot as plt
import numpy as np

# Generating sample data
x = np.linspace(1, 1000, 100)
y = np.sin(x) * np.log10(x)  # Generating data for demonstration

# Creating a plot with logarithmic x-axis
plt.figure(figsize=(8, 4))
plt.plot(x, y)
plt.xscale('log')  # Set x-axis to logarithmic scale
plt.xlabel('X-axis (Logarithmic Scale)')
plt.ylabel('Y-axis')
plt.title('Plot with Logarithmic X-axis')
plt.show()
輸出
LG X-Axis

對數 X 軸提供了對資料視覺化的不同視角,強調了沿 X 軸不同數量級上的指數行為或模式。

對數 Y 軸

對數 Y 軸,我們通常將其稱為 Y 軸上的對數刻度,表示繪圖中的一種縮放方法,其中 Y 軸上的值以對數而不是線性方式顯示。當處理跨越多個數量級的資料時,這種縮放方式特別有用。

Matplotlib 中的對數 Y 軸允許有效地視覺化涵蓋廣泛值的資料,透過使用線性刻度更容易觀察可能不容易看到的模式或趨勢。

對數 Y 軸的特徵

對數縮放 - Y 軸上的值以對數方式縮放,其中每個單位增加表示一個乘法因子,即基值(通常為 10 或 e)的冪,而不是相等的增量。

相等因子 - Y 軸上的相等距離表示相等的乘法因子,而不是相等的數值差異。例如,在對數刻度上,1、10、100 的間隔表示 10 的因子。

資料壓縮 - 對數縮放透過使視覺化跨越多個數量級的資料變得更容易來壓縮廣泛的值。

示例

在此示例中,plt.yscale('log') 將 Y 軸設定為對數刻度。結果,指數增長資料以對數刻度沿 Y 軸顯示,透過方便地在廣泛的值範圍內視覺化資料。

import matplotlib.pyplot as plt
import numpy as np

# Sample data with a wide range
x = np.linspace(1, 100, 100)
y = np.exp(x)  # Exponential growth for demonstration

# Creating a plot with a logarithmic y-axis
plt.plot(x, y)
plt.yscale('log')  # Set y-axis to logarithmic scale
plt.xlabel('X-axis')
plt.ylabel('Y-axis (Logarithmic Scale)')
plt.title('Plot with Logarithmic Y-axis')
plt.show()
輸出
Log Y-Axis

雙對數座標軸

雙對數刻度,即圖中x軸和y軸都使用對數刻度,表示基於數量級而不是線性增量的值。當處理在水平和垂直方向上跨越多個數量級的資料時,這種刻度特別有用。

當可視化在水平和垂直方向上跨越多個數量級的資料時,雙對數刻度非常有效,它壓縮了值的範圍,從而改善視覺化效果和模式識別。

雙對數座標軸的使用場景

資料範圍廣 - 當x軸和y軸資料都跨越多個數量級時,雙對數刻度會壓縮視覺化表示,從而獲得更好的見解。

指數關係 - 視覺化兩個維度上具有指數關係的資料。

科學和工程資料 - 常用於科學和工程繪圖中,其中值跨越多個尺度。

示例

在這個例子中,plt.xscale('log')plt.yscale('log') 函式分別將x軸和y軸設定為對數刻度。該圖以每個軸都表示數量級值的方式視覺化資料點,從而更好地視覺化在兩個維度上跨越廣泛值的範圍的資料。

import matplotlib.pyplot as plt
import numpy as np

# Generating sample data with a wide range
x = np.linspace(1, 1000, 100)
y = np.logspace(1, 4, 100)  # Logarithmically spaced data for demonstration

# Creating a plot with logarithmic scaling for both axes
plt.figure(figsize=(8, 6))
plt.scatter(x, y)
plt.xscale('log')  # Set x-axis to logarithmic scale
plt.yscale('log')  # Set y-axis to logarithmic scale
plt.xlabel('X-axis (Logarithmic Scale)')
plt.ylabel('Y-axis (Logarithmic Scale)')
plt.title('Plot with Logarithmic Both Axes')
plt.show()
輸出
Log Both

對數y軸刻度

在這個例子中,我們使用matplotlib庫繪製對數y軸刻度。

示例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(1, 100, 1000)
y = np.log(x)
plt.yscale('log')
plt.plot(x, y, c="red", lw=3, linestyle="dashdot", label="y=log(x)")
plt.legend()
plt.show()
輸出
logarithmic_bins
廣告