用 pgfplots 繪製對數座標軸
把 axis 換成 semilogyaxis(y 軸取對數)、semilogxaxis(x 軸取對數)或 loglogaxis(兩軸都取對數),或在一般的 axis 上設定 ymode=log 或 xmode=log。
y 軸使用對數刻度
以倍數成長的數值,例如計數、誤差或頻率,用對數刻度呈現最清楚。semilogyaxis 讓 x 軸維持線性,並讓 y 軸變成對數刻度。刻度位於 10 的冪次上,並標示為 $10^k$。
對數 y 軸上的指數成長
\begin{tikzpicture}
\begin{semilogyaxis}[xlabel={Day}, ylabel={Cells}, grid=major]
\addplot coordinates {(0,44) (1,120) (2,350) (3,980) (4,2700) (5,7600) (6,21000)};
\end{semilogyaxis}
\end{tikzpicture}在這種圖上,一條直線代表每一步都以相同倍數穩定成長。
兩軸都取對數
loglogaxis 讓兩軸都變成對數刻度。像 $y = x^2$ 這樣的冪律會變成一條直線,斜率就是指數。
雙對數圖上的冪律
\begin{tikzpicture}
\begin{loglogaxis}[xlabel=$n$, ylabel={Time (s)}, legend pos=north west]
\addplot coordinates {(10,0.001) (100,0.01) (1000,0.1) (10000,1)};
\addplot coordinates {(10,0.0001) (100,0.01) (1000,1) (10000,100)};
\legend{$O(n)$, $O(n^2)$}
\end{loglogaxis}
\end{tikzpicture}用 xmode 和 ymode 達到相同效果
xmode=log 和 ymode=log 會讓一般的 axis 使用對數刻度。當這個選擇由樣式決定,或在群組圖中時,這種寫法很方便。
一般座標軸上的 xmode=log
\begin{tikzpicture}
\begin{axis}[xmode=log, xlabel={Frequency (Hz)}, ylabel={Gain (dB)}, ymin=-30, ymax=5]
\addplot[blue, thick, domain=1:5, samples=60, variable=t]
({10^t}, {-10*log10(1 + (10^t/1000)^2)});
\end{axis}
\end{tikzpicture}公式在對數座標軸上也能使用,但 domain 和 samples 以資料單位計算:取樣點平均分布在兩端之間,所以在對數座標軸上,幾乎所有取樣點都會落在最後一個十倍區間內。因此這個範例以指數 t 繪製參數曲線,從 $10^1$ 到 $10^5$,讓取樣點沿著對數座標軸平均分布。pgfplots 的行為也是如此。
其他底數
log basis y=2(或 log basis x)會改變底數。刻度就會位於 2 的冪次上,並標示為 $2^k$。
y 軸以 2 為底
\begin{tikzpicture}
\begin{semilogyaxis}[log basis y=2, xlabel={Doublings}, ymin=1, ymax=64]
\addplot coordinates {(0,1) (1,2) (2,4) (3,8) (4,16) (5,32)};
\end{semilogyaxis}
\end{tikzpicture}對數座標軸上的選項
| 選項 | 在 Scissor LaTeX 中 | 說明 |
|---|---|---|
semilogxaxis、semilogyaxis、loglogaxis | 可以使用 | |
xmode=log、ymode=log | 可以使用 | |
log basis x=b、log basis y=b | 可以使用 | |
對數座標軸上的 ymin、ymax | 可以使用 | 請使用正值。 |
log ticks with fixed point | 不支援 | 會被忽略並顯示訊息;標籤維持冪次形式。 |
對數座標軸上的 ybar stacked | 不支援 | 長條會互相重疊繪製而不是堆疊,而且不會顯示訊息。 |
| 0 或以下的數值 | 捨棄 | 無法在對數刻度上顯示的點會被省略,並顯示一則訊息。 |
與 TeX 安裝環境的差異
線性座標軸上的長條請參閱長條圖,所有選項請參閱 pgfplots 手冊:ctan.org/pkg/pgfplots。
常見問題
怎麼在 pgfplots 中讓 y 軸使用對數刻度?
用 \begin{semilogyaxis} ... \end{semilogyaxis} 取代 axis,或在座標軸選項中加上 ymode=log。
為什麼我的對數圖沒有顯示資料?
對數座標軸無法顯示零或負值。帶有這些值的點會被捨棄,「問題」分頁會說明這一點。請平移資料,或改用線性座標軸。
可以用 2 或 e 為底嗎?
可以,使用 log basis y=2(或任何正數,例如 log basis x=2.71828)。
本頁的每個範例都在建置網站時由 Scissor LaTeX 排版。 最後更新:2026-11-07