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
\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
\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}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
\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}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
\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
| Opcja | W Scissor LaTeX | Uwagi |
|---|---|---|
semilogxaxis, semilogyaxis, loglogaxis | Działa | |
xmode=log, ymode=log | Działa | |
log basis x=b, log basis y=b | Działa | |
ymin, ymax na osi logarytmicznej | Działa | Podawaj wartości dodatnie. |
log ticks with fixed point | Nieobsługiwane | Pomijane z komunikatem; etykiety pozostają potęgami. |
ybar stacked na osi logarytmicznej | Nieobsługiwane | Słupki są rysowane jeden na drugim, bez kumulowania, i bez komunikatu. |
| wartości 0 lub mniejsze | Odrzucane | Punkty, 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.