跳到主要內容

用 pgfplots 繪製對數座標軸

把 axis 換成 semilogyaxis(y 軸取對數)、semilogxaxis(x 軸取對數)或 loglogaxis(兩軸都取對數),或在一般的 axis 上設定 ymode=log 或 xmode=log。

y 軸使用對數刻度

以倍數成長的數值,例如計數、誤差或頻率,用對數刻度呈現最清楚。semilogyaxis 讓 x 軸維持線性,並讓 y 軸變成對數刻度。刻度位於 10 的冪次上,並標示為 $10^k$。

對數 y 軸上的指數成長

LaTeX導言區: \usepackage{pgfplots}在編輯器中開啟 (在新分頁中開啟)
\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$ 這樣的冪律會變成一條直線,斜率就是指數。

雙對數圖上的冪律

LaTeX導言區: \usepackage{pgfplots}在編輯器中開啟 (在新分頁中開啟)
\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}
由 Scissor LaTeX 排版: 雙對數圖上的冪律

用 xmode 和 ymode 達到相同效果

xmode=log 和 ymode=log 會讓一般的 axis 使用對數刻度。當這個選擇由樣式決定,或在群組圖中時,這種寫法很方便。

一般座標軸上的 xmode=log

LaTeX導言區: \usepackage{pgfplots}在編輯器中開啟 (在新分頁中開啟)
\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}
由 Scissor LaTeX 排版: 一般座標軸上的 xmode=log

公式在對數座標軸上也能使用,但 domain 和 samples 以資料單位計算:取樣點平均分布在兩端之間,所以在對數座標軸上,幾乎所有取樣點都會落在最後一個十倍區間內。因此這個範例以指數 t 繪製參數曲線,從 $10^1$ 到 $10^5$,讓取樣點沿著對數座標軸平均分布。pgfplots 的行為也是如此。

其他底數

log basis y=2(或 log basis x)會改變底數。刻度就會位於 2 的冪次上,並標示為 $2^k$。

y 軸以 2 為底

LaTeX導言區: \usepackage{pgfplots}在編輯器中開啟 (在新分頁中開啟)
\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