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
\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
\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}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
\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}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
\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ọn | Trong Scissor LaTeX | Ghi chú |
|---|---|---|
semilogxaxis, semilogyaxis, loglogaxis | Hoạt động | |
xmode=log, ymode=log | Hoạt động | |
log basis x=b, log basis y=b | Hoạt động | |
ymin, ymax trên trục logarit | Hoạt động | Hãy dùng giá trị dương. |
log ticks with fixed point | Khô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 logarit | Khô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ơn | Bị 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.