Chuyển đến nội dung

Trục logarit với pgfplots

Thay axis bằng semilogyaxis (y logarit), semilogxaxis (x logarit) hoặc loglogaxis (cả hai), hoặc đặt ymode=log hay xmode=log trên một axis thông thường.

Thang logarit trên trục y

Các giá trị tăng theo cấp số nhân, như số đếm, sai số hay tần số, dễ đọc nhất trên thang logarit. semilogyaxis giữ x tuyến tính và làm cho y thành logarit. Các vạch chia nằm tại các lũy thừa của mười và được ghi nhãn là $10^k$.

Tăng trưởng hàm mũ trên trục y logarit

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\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}

Một đường thẳng trên đồ thị này nghĩa là tăng trưởng đều với cùng một hệ số sau mỗi bước.

Cả hai trục đều logarit

loglogaxis làm cho cả hai trục thành logarit. Một luật lũy thừa như $y = x^2$ trở thành một đường thẳng có độ dốc bằng số mũ.

Luật lũy thừa trên đồ thị log-log

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\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}
Dàn trang bởi Scissor LaTeX: Luật lũy thừa trên đồ thị log-log

Cùng kết quả với xmode và ymode

xmode=log và ymode=log cho một axis thông thường thang logarit. Cách này tiện khi lựa chọn được đặt trong một kiểu, hoặc bên trong một nhóm đồ thị.

xmode=log trên một trục thông thường

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\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}
Dàn trang bởi Scissor LaTeX: xmode=log trên một trục thông thường

Công thức cũng hoạt động trên trục logarit, nhưng domain và samples tính theo đơn vị dữ liệu: các điểm mẫu được rải đều giữa hai đầu, nên trên trục logarit hầu hết chúng rơi vào bậc độ lớn cuối cùng. Vì vậy ví dụ trên vẽ một đường cong tham số theo số mũ t, từ $10^1$ đến $10^5$, giúp các điểm mẫu rải đều dọc theo trục logarit. pgfplots cũng hoạt động theo cách này.

Một cơ số khác

log basis y=2 (hoặc log basis x) thay đổi cơ số. Khi đó các vạch chia nằm tại các lũy thừa của 2 và được ghi nhãn $2^k$.

Cơ số 2 trên trục y

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\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}

Các tùy chọn trên trục logarit

Tùy chọnTrong Scissor LaTeXGhi chú
semilogxaxis, semilogyaxis, loglogaxisHoạt động
xmode=log, ymode=logHoạt động
log basis x=b, log basis y=bHoạt động
ymin, ymax trên trục logaritHoạt độngHãy dùng giá trị dương.
log ticks with fixed pointKhông hỗ trợBị bỏ qua kèm thông báo; nhãn vẫn ở dạng lũy thừa.
ybar stacked trên trục logaritKhông hỗ trợCác cột được vẽ chồng lên nhau chứ không xếp chồng, và không có thông báo.
giá trị bằng 0 hoặc nhỏ hơnBị loại bỏCác điểm không thể hiển thị trên thang logarit bị bỏ ra, kèm một thông báo.

Khác biệt so với một bản cài đặt TeX

Xem biểu đồ cột cho cột trên trục tuyến tính và tài liệu hướng dẫn pgfplots cho mọi tùy chọn: ctan.org/pkg/pgfplots.

Xem thêm Đồ thị đường, Nhóm đồ thị và Đường đồng mức và bản đồ nhiệt.

Hỏi và đáp

Làm thế nào để làm trục y thành logarit trong pgfplots?

Dùng \begin{semilogyaxis} ... \end{semilogyaxis} thay cho axis, hoặc thêm ymode=log vào các tùy chọn của trục.

Vì sao đồ thị logarit của tôi không hiện dữ liệu?

Trục logarit không thể hiển thị giá trị bằng không hoặc âm. Các điểm có giá trị như vậy bị loại bỏ, và thẻ Sự cố sẽ báo điều đó. Hãy dịch chuyển dữ liệu hoặc dùng trục tuyến tính.

Tôi có thể dùng cơ số 2 hoặc cơ số e không?

Có, với log basis y=2 (hoặc bất kỳ số dương nào, ví dụ log basis x=2.71828).

Mọi ví dụ trên trang này đều được Scissor LaTeX dàn trang khi xây dựng trang web. Cập nhật lần cuối 2026-11-07.