Перейти до вмісту

Логарифмічні осі з pgfplots

Замініть axis на semilogyaxis (логарифмічна y), semilogxaxis (логарифмічна x) або loglogaxis (обидві) чи задайте ymode=log або xmode=log для звичайної axis.

Логарифмічна шкала на осі y

Значення, що зростають у рази, як-от кількості, похибки чи частоти, найкраще читаються на логарифмічній шкалі. semilogyaxis залишає x лінійною й робить y логарифмічною. Поділки стоять на степенях десяти й підписуються як $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$ стає прямою, нахил якої дорівнює показнику степеня.

Степеневі закони на графіку log-log

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: Степеневі закони на графіку log-log

Те саме через 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$.

Основа 2 на осі y

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.

Див. також лінійні графіки, групи графіків і контури й теплові карти.

Запитання й відповіді

Як зробити вісь 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.