Логарифмічні осі з pgfplots
Замініть axis на semilogyaxis (логарифмічна y), semilogxaxis (логарифмічна x) або loglogaxis (обидві) чи задайте ymode=log або xmode=log для звичайної axis.
Логарифмічна шкала на осі y
Значення, що зростають у рази, як-от кількості, похибки чи частоти, найкраще читаються на логарифмічній шкалі. semilogyaxis залишає x лінійною й робить y логарифмічною. Поділки стоять на степенях десяти й підписуються як $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$ стає прямою, нахил якої дорівнює показнику степеня.
Степеневі закони на графіку 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}Те саме через 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$.
Основа 2 на осі 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}Параметри логарифмічних осей
| Параметр | У 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.
Див. також лінійні графіки, групи графіків і контури й теплові карти.
Запитання й відповіді
Як зробити вісь y логарифмічною в pgfplots?
Використайте \begin{semilogyaxis} ... \end{semilogyaxis} замість axis або додайте ymode=log до параметрів осі.
Чому мій логарифмічний графік не показує даних?
Логарифмічна вісь не може показати нульові чи від’ємні значення. Точки з такими значеннями відкидаються, і вкладка «Проблеми» про це повідомляє. Зсуньте дані або використайте лінійну вісь.
Чи можна використати основу 2 або e?
Так, через log basis y=2 (або будь-яке додатне число, наприклад log basis x=2.71828).
Кожен приклад на цій сторінці верстається в Scissor LaTeX під час збирання сайту. Оновлено 2026-11-07.