Przejdź do treści

Osie logarytmiczne w pgfplots

Zastąp axis przez semilogyaxis (logarytmiczne y), semilogxaxis (logarytmiczne x) lub loglogaxis (obie osie) albo ustaw ymode=log lub xmode=log w zwykłej axis.

Skala logarytmiczna na osi y

Wartości rosnące wielokrotnie, takie jak liczebności, błędy czy częstotliwości, najlepiej czyta się w skali logarytmicznej. semilogyaxis pozostawia x liniowe, a y czyni logarytmicznym. Kreski stoją przy potęgach dziesięciu i są opisane jako $10^k$.

Wzrost wykładniczy na logarytmicznej osi y

LaTeXPreambuła: \usepackage{pgfplots}Otwórz w edytorze (otwiera się w nowej karcie)
\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}

Linia prosta na tym wykresie oznacza stały wzrost o ten sam czynnik w każdym kroku.

Obie osie logarytmiczne

loglogaxis czyni obie osie logarytmicznymi. Prawo potęgowe takie jak $y = x^2$ staje się linią prostą, której nachylenie jest wykładnikiem.

Prawa potęgowe na wykresie log-log

LaTeXPreambuła: \usepackage{pgfplots}Otwórz w edytorze (otwiera się w nowej karcie)
\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}
Złożone przez Scissor LaTeX: Prawa potęgowe na wykresie log-log

To samo z xmode i ymode

xmode=log i ymode=log nadają zwykłej axis skalę logarytmiczną. Przydaje się to, gdy o wyborze decyduje styl, albo wewnątrz wykresu grupowego.

xmode=log w zwykłej osi

LaTeXPreambuła: \usepackage{pgfplots}Otwórz w edytorze (otwiera się w nowej karcie)
\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}
Złożone przez Scissor LaTeX: xmode=log w zwykłej osi

Wzory działają także na osiach logarytmicznych, ale domain i samples są w jednostkach danych: próbki są rozłożone równomiernie między oboma końcami, więc na osi logarytmicznej prawie wszystkie trafiają do ostatniej dekady. Dlatego przykład rysuje krzywą parametryczną w wykładniku t, od $10^1$ do $10^5$, co rozkłada próbki równomiernie wzdłuż osi logarytmicznej. pgfplots zachowuje się tak samo.

Inna podstawa

log basis y=2 (lub log basis x) zmienia podstawę. Kreski stoją wtedy przy potęgach 2 i są opisane jako $2^k$.

Podstawa 2 na osi y

LaTeXPreambuła: \usepackage{pgfplots}Otwórz w edytorze (otwiera się w nowej karcie)
\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}

Opcje na osiach logarytmicznych

OpcjaW Scissor LaTeXUwagi
semilogxaxis, semilogyaxis, loglogaxisDziała
xmode=log, ymode=logDziała
log basis x=b, log basis y=bDziała
ymin, ymax na osi logarytmicznejDziałaPodawaj wartości dodatnie.
log ticks with fixed pointNieobsługiwanePomijane z komunikatem; etykiety pozostają potęgami.
ybar stacked na osi logarytmicznejNieobsługiwaneSłupki są rysowane jeden na drugim, bez kumulowania, i bez komunikatu.
wartości 0 lub mniejszeOdrzucanePunkty, których nie da się pokazać w skali logarytmicznej, są pomijane z jednym komunikatem.

Czym różni się od instalacji TeX

Słupki na osiach liniowych opisuje strona wykresów słupkowych, a każdą opcję dokumentacja pgfplots: ctan.org/pkg/pgfplots.

Zobacz też Wykresy liniowe, Wykresy grupowe i Kontury i mapy ciepła.

Pytania i odpowiedzi

Jak ustawić logarytmiczną oś y w pgfplots?

Użyj \begin{semilogyaxis} ... \end{semilogyaxis} zamiast axis albo dodaj ymode=log do opcji osi.

Dlaczego mój wykres logarytmiczny nie pokazuje danych?

Oś logarytmiczna nie może pokazać zera ani wartości ujemnych. Punkty z takimi wartościami są odrzucane, a karta Problemy o tym informuje. Przesuń dane albo użyj osi liniowej.

Czy mogę użyć podstawy 2 lub e?

Tak, za pomocą log basis y=2 (lub dowolnej liczby dodatniej, na przykład log basis x=2.71828).

Każdy przykład na tej stronie jest składany przez Scissor LaTeX podczas budowania witryny. Ostatnia aktualizacja: 2026-11-07.