Логарифмические оси с 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^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.