Assi logaritmici con pgfplots
Sostituisci axis con semilogyaxis (y logaritmico), semilogxaxis (x logaritmico) o loglogaxis (entrambi), oppure imposta ymode=log o xmode=log su un normale axis.
Una scala logaritmica sull’asse y
I valori che crescono per fattori, come conteggi, errori o frequenze, si leggono meglio su una scala logaritmica. semilogyaxis mantiene x lineare e rende y logaritmico. Le tacche stanno sulle potenze di dieci e sono etichettate come $10^k$.
Crescita esponenziale su un asse y logaritmico
\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}Una retta in questo grafico indica una crescita costante dello stesso fattore a ogni passo.
Entrambi gli assi logaritmici
loglogaxis rende logaritmici entrambi gli assi. Una legge di potenza come $y = x^2$ diventa una retta la cui pendenza è l’esponente.
Leggi di potenza su un grafico 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}Lo stesso con xmode e ymode
xmode=log e ymode=log danno una scala logaritmica a un normale axis. È comodo quando la scelta viene fatta da uno stile, o dentro un gruppo di grafici.
xmode=log su un axis normale
\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}Le formule funzionano anche sugli assi logaritmici, ma domain e samples sono in unità dei dati: i campioni sono distribuiti uniformemente tra i due estremi, quindi su un asse logaritmico quasi tutti finiscono nell’ultima decade. Per questo l’esempio traccia una curva parametrica nell’esponente t, da $10^1$ a $10^5$, che distribuisce i campioni uniformemente lungo l’asse logaritmico. pgfplots si comporta allo stesso modo.
Un’altra base
log basis y=2 (o log basis x) cambia la base. Le tacche stanno allora sulle potenze di 2 e sono etichettate $2^k$.
Base 2 sull’asse 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}Opzioni sugli assi logaritmici
| Opzione | In Scissor LaTeX | Note |
|---|---|---|
semilogxaxis, semilogyaxis, loglogaxis | Funziona | |
xmode=log, ymode=log | Funziona | |
log basis x=b, log basis y=b | Funziona | |
ymin, ymax su un asse logaritmico | Funziona | Usa valori positivi. |
log ticks with fixed point | Non supportato | Ignorato con un messaggio; le etichette restano potenze. |
ybar stacked su un asse logaritmico | Non supportato | Le barre vengono disegnate una sopra l’altra, non impilate, e non compare alcun messaggio. |
| valori pari a 0 o inferiori | Scartati | I punti che non si possono mostrare su una scala logaritmica vengono omessi, con un messaggio. |
Cosa cambia rispetto a un’installazione TeX
Vedi grafici a barre per le barre su assi lineari e il manuale di pgfplots per ogni opzione: ctan.org/pkg/pgfplots.
Vedi anche Grafici a linee, Gruppi di grafici e Contorni e mappe di calore.
Domande e risposte
Come si rende logaritmico l’asse y in pgfplots?
Usa \begin{semilogyaxis} ... \end{semilogyaxis} al posto di axis, oppure aggiungi ymode=log alle opzioni dell’axis.
Perché il mio grafico logaritmico non mostra dati?
Un asse logaritmico non può mostrare valori nulli o negativi. I punti con tali valori vengono scartati, e la scheda Problemi lo segnala. Trasla i dati oppure usa un asse lineare.
Posso usare la base 2 o la base e?
Sì, con log basis y=2 (o qualsiasi numero positivo, per esempio log basis x=2.71828).
Ogni esempio di questa pagina viene composto da Scissor LaTeX quando il sito viene generato. Ultimo aggiornamento: 2026-11-07.