> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/latex/it/specifico-per-argomento/08-pgfplots-package.md).

# Pacchetto Pgfplots

## Introduzione

Il `pgfplots` pacchetto, che è basato su [`TikZ`](/latex/it/figure-e-tabelle/05-tikz-package.md), è un potente strumento di visualizzazione e ideale per creare grafica scientifica/tecnica. L'idea di base è che fornisci i dati/la formula di input e `pgfplots` fa il resto.

### Il preambolo del documento

Per usare il `pgfplots` pacchetto nel tuo documento, aggiungi la seguente riga al preambolo:

`\usepackage{pgfplots}`

Puoi anche configurare il comportamento di `pgfplots` nel preambolo del documento. Ad esempio, per cambiare la dimensione di ogni grafico e garantire la compatibilità con le versioni precedenti (consigliato) aggiungi la seguente riga:

`\pgfplotsset{width=10cm,compat=1.9}`

Questo cambia la dimensione di ogni `pgfplot` figura a 10 centimetri, che è enorme; puoi usare unità diverse (pt, mm, in). Il *compat* parametro serve affinché il codice funzioni con la versione 1.9 del pacchetto o successive.

### Tempo di compilazione (breve contesto)

Quando il motore TeX originale fu concepito/scritto, più di 40 anni fa, non era progettato per *diretta* produzione di grafica—questa doveva essere composta da file creati da programmi esterni (ad esempio, MetaPost) e importati nel documento impaginato. L'avvento di pdfTeX—che si basa strettamente sul software TeX originale—ha portato la possibilità di creare grafica *direttamente* utilizzando i nuovi comandi del linguaggio TeX integrati in pdfTeX (chiamati *primitivi*) che possono produrre gli operatori/dati PDF necessari per generare grafica. La creazione di pdfTeX ha portato allo sviluppo di sofisticati pacchetti grafici LaTeX, come `TikZ`, `pgfplots` ecc., capaci di produrre grafica codificata usando comandi LaTeX di alto livello.

Tuttavia, dietro le quinte, e nel profondo del motore pdfTeX (e di altri motori), quei comandi grafici LaTeX di alto livello devono essere elaborati "riconvertendoli" in comandi (primitivi) del motore pdfTeX di basso livello che generano effettivamente (in output) gli operatori PDF richiesti per produrre la/le figura/e risultante/i. Quel trattamento dei comandi grafici LaTeX—espansione ed esecuzione di primitivi—può richiedere una quantità di tempo non trascurabile. Anche un singolo comando grafico LaTeX di alto livello, insieme ai dati corrispondenti, può richiedere l'esecuzione ripetuta di *molti* comandi (primitivi) del motore TeX di basso livello. Dal punto di vista dell'utente finale, i documenti contenenti più `pgfplots` figure e/o grafica molto complessa possono richiedere una quantità considerevole di tempo per essere renderizzati (compilati).

### Ridurre il tempo di compilazione

Per aumentare la velocità di compilazione del documento puoi configurare il `pgfplots` pacchetto per esportare le figure in file PDF separati e poi importarli nel documento: compila una volta, poi riutilizza le figure. Per farlo, aggiungi il codice mostrato qui sotto al preambolo:

```
\usepgfplotslibrary{external}
\tikzexternalize
```

Vedi [questo articolo della guida](/latex/it/domande-e-risposte/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) per ulteriori dettagli su come impostare la tikz-externalization nel tuo progetto Overleaf.

## Esempio di base (con esternalizzazione anche delle figure)

```latex
\documentclass{article}
\usepackage[margin=0.25in]{geometry}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.9}

% Esternalizzeremo le figure
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

Il primo esempio mostra espressioni matematiche 2D e 3D tracciate affiancate.

%Qui inizia il grafico 2D
\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%Qui finisce il grafico 2D
\hskip 5pt
%Qui inizia il grafico 3D
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
%Qui finisce il grafico 3D

\end{document}
```

[Apri questo `pgfplots` esempio in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.25in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%0A%25+We+will+externalize+the+figures%0A%5Cusepgfplotslibrary%7Bexternal%7D%0A%5Ctikzexternalize%0A%0A%5Cbegin%7Bdocument%7D%0A%0AFirst+example+is+2D+and+3D+math+expressions+plotted+side-by-side.%0A%0A%25Here+begins+the+2D+plot%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot%5Bcolor%3Dred%5D%7Bexp%28x%29%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%25Here+ends+the+2D+plot%0A%5Chskip+5pt%0A%25Here+begins+the+3D+plot%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot3%5B%0A++++surf%2C%0A%5D%0A%7Bexp%28-x%5E2-y%5E2%29%2Ax%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%25Here+ends+the+3D+plot%0A%0A%5Cend%7Bdocument%7D)

L'immagine seguente mostra il risultato prodotto dal codice sopra:

![Plgplotsex1OLV2.png](/files/649de443ac73aff6b62fbfa27969b9551af1173a)

### Spiegazione del codice

Poiché `pgfplots` si basa su `tikz` il grafico deve essere all'interno di un ambiente `tikzpicture` . Poi la dichiarazione dell'ambiente `\begin{axis}`, `\end{axis}` imposterà la corretta scala per il grafico—controlla gli [Guida di riferimento](#reference-guide) per altri ambienti degli assi.

Per aggiungere un grafico vero e proprio, il comando `\addplot[color=red]{log(x)};` viene usato. All'interno delle parentesi quadre, `[...]`, si possono passare alcune opzioni; qui impostiamo il `colore` del grafico su `red`. Le parentesi quadre sono obbligatorie; se non vengono passate opzioni, lascia uno spazio vuoto tra di esse. All'interno delle parentesi graffe inserisci la funzione da tracciare. È importante ricordare che questo comando deve terminare con un punto e virgola (;).

Per mettere un secondo grafico accanto al primo dichiara un nuovo `tikzpicture` ambiente. Non inserire una nuova riga, ma un piccolo spazio vuoto; in questo caso `hskip 10pt` inserirà uno spazio vuoto largo 10pt.

Il resto della sintassi è lo stesso, tranne per `\addplot3 [surf,]{exp(-x^2-y^2)*x};`. Questo aggiungerà un grafico 3D, e l'opzione `surf` all'interno delle parentesi quadre dichiara che si tratta di un grafico di superficie. La funzione da tracciare deve essere inserita tra parentesi graffe. Di nuovo, non dimenticare di mettere un punto e virgola (;) alla fine del comando.

**Nota**: È consigliabile come buona pratica indentare il codice—vedi il secondo grafico nell'esempio sopra—e aggiungere una virgola (,) alla fine di ogni opzione passata a `\addplot`. In questo modo il codice è più leggibile ed è più facile aggiungere ulteriori opzioni se necessario.

## Grafici 2D

`pgfplots`Le funzionalità di grafici 2D sono vaste—e puoi personalizzare i tuoi grafici in base alle tue esigenze. Tuttavia, le opzioni predefinite di solito danno ottimi risultati, quindi tutto ciò che devi fare è fornire i dati e LaTeX farà il resto.

### Tracciare espressioni matematiche

Ecco un esempio:

```latex
\begin{tikzpicture}
\begin{axis}[
    axis lines = left,
    xlabel = \(x\),
    ylabel = {\(f(x)\)},
]
%Sotto è definita la parabola rossa
\addplot [
    domain=-10:10,
    samples=100,
    color=red,
]
{x^2 - 2*x - 1};
\addlegendentry{\(x^2 - 2x - 1\)}
%Qui è definita la parabola blu
\addplot [
    domain=-10:10,
    samples=100,
    color=blue,
    ]
    {x^2 + 2*x + 1};
\addlegendentry{\(x^2 + 2x + 1\)}

\end{axis}
\end{tikzpicture}
```

[Apri questo `pgfplots` esempio in Overleaf.](https://www.overleaf.com/docs?engine=\&snip_name=pgfplots+example+2\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.25in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++axis+lines+%3D+left%2C%0A++++xlabel+%3D+%5C%28x%5C%29%2C%0A++++ylabel+%3D+%7B%5C%28f%28x%29%5C%29%7D%2C%0A%5D%0A%25Below+the+red+parabola+is+defined%0A%5Caddplot+%5B%0A++++domain%3D-10%3A10%2C+%0A++++samples%3D100%2C+%0A++++color%3Dred%2C%0A%5D%0A%7Bx%5E2+-+2%2Ax+-+1%7D%3B%0A%5Caddlegendentry%7B%5C%28x%5E2+-+2x+-+1%5C%29%7D%0A%25Here+the+blue+parabola+is+defined%0A%5Caddplot+%5B%0A++++domain%3D-10%3A10%2C+%0A++++samples%3D100%2C+%0A++++color%3Dblue%2C%0A++++%5D%0A++++%7Bx%5E2+%2B+2%2Ax+%2B+1%7D%3B%0A%5Caddlegendentry%7B%5C%28x%5E2+%2B+2x+%2B+1%5C%29%7D%0A%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

L'output di questo codice è mostrato nell'immagine qui sotto—il preambolo del documento LaTeX viene aggiunto automaticamente quando apri il link:

![Plgplotsex2.png](/files/0abf84375812a9c0c128fdef2484a3a1c0e47326)

#### Spiegazione del codice

Analizziamo i nuovi comandi riga per riga:

**axis lines = left.**

Questo imposterà gli assi solo sul lato sinistro e inferiore del grafico, invece della cornice predefinita. Ulteriori opzioni di personalizzazione nella guida di riferimento.

**xlabel = (x) e ylabel = {(f(x))}.**

Nomi di parametro autoesplicativi: ti consentono di mettere un'etichetta sugli assi orizzontale e verticale. Nota il valore di ylabel tra parentesi graffe: queste parentesi dicono a pgfplots come raggruppare il testo. Anche xlabel avrebbe potuto avere delle parentesi. Questo è utile per etichette complicate che potrebbero confondere pgfplots.

**\addplot.**

Questo aggiungerà un grafico all'asse; l'uso generale è stato descritto nell'introduzione. In questo esempio ci sono due nuovi parametri.

**domain=-10:10.**

Questo stabilisce l'intervallo dei valori di x.

**samples=100.**

Determina il numero di punti nell'intervallo definito da domain. Più alto è il valore di samples, più nitido è il grafico ottenuto, ma ci vorrà più tempo per il rendering.

**\addlegendentry{\\(x^2 - 2x - 1\\)}.**

Questo aggiunge la legenda per identificare la funzione x^2 - 2x - 1.

Per aggiungere un altro grafico al plot scrivi semplicemente una nuova `\addplot` voce.

### Tracciare dati

La ricerca scientifica produce spesso dati che devono essere analizzati. L'esempio seguente mostra come tracciare dati con *pgfplots*:

```latex
Tracciare dati:

\begin{tikzpicture}
\begin{axis}[
    title={Dipendenza della solubilità di CuSO\(_4\cdot\)5H\(_2\)O dalla temperatura},
    xlabel={Temperatura [\textcelsius]},
    ylabel={Solubilità [g per 100 g di acqua]},
    xmin=0, xmax=100,
    ymin=0, ymax=120,
    xtick={0,20,40,60,80,100},
    ytick={0,20,40,60,80,100,120},
    legend pos=north west,
    ymajorgrids=true,
    grid style=dashed,
]

\addplot[
    color=blue,
    mark=square,
    ]
    coordinates {
    (0,23.1)(10,27.5)(20,32)(30,37.8)(40,44.6)(60,61.8)(80,83.8)(100,114)
    };
    \legend{CuSO\(_4\cdot\)5H\(_2\)O}

\end{axis}
\end{tikzpicture}
```

[Apri questo `pgfplots` esempio in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+example+3\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Btextcomp%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0APlotting+from+data%3A%0A%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++title%3D%7BTemperature+dependence+of+CuSO%5C%28_4%5Ccdot%5C%295H%5C%28_2%5C%29O+solubility%7D%2C%0A++++xlabel%3D%7BTemperature+%5B%5Ctextcelsius%5D%7D%2C%0A++++ylabel%3D%7BSolubility+%5Bg+per+100+g+water%5D%7D%2C%0A++++xmin%3D0%2C+xmax%3D100%2C%0A++++ymin%3D0%2C+ymax%3D120%2C%0A++++xtick%3D%7B0%2C20%2C40%2C60%2C80%2C100%7D%2C%0A++++ytick%3D%7B0%2C20%2C40%2C60%2C80%2C100%2C120%7D%2C%0A++++legend+pos%3Dnorth+west%2C%0A++++ymajorgrids%3Dtrue%2C%0A++++grid+style%3Ddashed%2C%0A%5D%0A%0A%5Caddplot%5B%0A++++color%3Dblue%2C%0A++++mark%3Dsquare%2C%0A++++%5D%0A++++coordinates+%7B%0A++++%280%2C23.1%29%2810%2C27.5%29%2820%2C32%29%2830%2C37.8%29%2840%2C44.6%29%2860%2C61.8%29%2880%2C83.8%29%28100%2C114%29%0A++++%7D%3B%0A++++%5Clegend%7BCuSO%5C%28_4%5Ccdot%5C%295H%5C%28_2%5C%29O%7D%0A++++%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

L'output di questo codice è mostrato nell'immagine qui sotto—il preambolo del documento LaTeX viene aggiunto automaticamente quando apri il link:

![Plgplotsex3.png](/files/156633e7f6cc2df672c3f89c4873913cba4442fc)

#### Spiegazione del codice

Qui ci sono alcuni nuovi comandi e parametri:

**title={Dipendenza della solubilità di CuSO(\_4\cdot)5H(\_2)O dalla temperatura}.**

Come puoi aspettarti, assegna un titolo alla figura. Il titolo verrà visualizzato sopra il grafico.

**xmin=0, xmax=100, ymin=0, ymax=120.**

Limiti minimo e massimo degli assi x e y.

**xtick={0,20,40,60,80,100}, ytick={0,20,40,60,80,100,120}.**

Punti in cui vengono posizionati i segni. Se è vuoto, le tacche vengono impostate automaticamente.

**legend pos=north west.**

Posizione del riquadro della legenda. Controlla la guida di riferimento per altre opzioni.

**ymajorgrids=true.**

Abilita/disabilita le linee della griglia sulle posizioni delle tacche dell'asse y. Usa xmajorgrids per abilitare le linee della griglia sull'asse x.

**grid style=dashed.**

Autoesplicativo. Per visualizzare linee della griglia tratteggiate.

**mark=square.**

Disegna un segno quadrato in ogni punto dell'array di coordinate. Ogni segno sarà collegato al successivo da una linea retta.

**coordinates {(0,23.1)(10,27.5)(20,32)...}**

Coordinate dei punti da tracciare. Questi sono i dati che vuoi analizzare graficamente.

Se i dati sono in un file, come accade la maggior parte delle volte; invece dei comandi `\addplot` e `coordinates` dovresti usare `\addplot table {file_with_the_data.dat}`, il resto delle opzioni è valido in questo ambiente.

### Grafici a dispersione

I grafici a dispersione sono usati per rappresentare informazioni usando qualche tipo di segno e sono comunemente usati nel calcolo della regressione statistica. In questo esempio creeremo un grafico a dispersione usando dati contenuti in un file chiamato `scattered_example.dat`, in cui i dati sono fatti così:

```
GPA  ma  ve  co   un
3.45 643 589 3.76 3.52
2.78 558 512 2.87 2.91
2.52 583 503 2.54 2.4
3.67 685 602 3.83 3.47
3.24 592 538 3.29 3.47
2.1 562 486 2.64 2.37
...
```

Il nostro grafico a dispersione usa le prime due colonne dei dati:

```latex
\begin{tikzpicture}
\begin{axis}[
    enlargelimits=false,
]
\addplot+[
    only marks,
    scatter,
    mark=halfcircle*,
    mark size=2.9pt]
table[meta=ma]
{scattered_example.dat};
\end{axis}
\end{tikzpicture}
```

![Scattered.png](/files/1defccbea55a34bd1fcf8ac46cf4a7a3fbded00d)

[Apri un esempio di progetto di grafico a dispersione in Overleaf (contiene il file dei dati `scattered_example.dat`).](https://www.overleaf.com/project/new/template/20099?id=68399290\&templateName=Scatter+plot+example\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

#### Spiegazione del codice

I parametri passati agli `axis` e `addplot` ambienti possono essere usati anche in un grafico di dati, eccetto `scatter`. Di seguito la descrizione del codice:

**enlarge limits=false**

Questo restringerà gli assi in modo che il punto con i valori massimi e minimi si trovi sul bordo del grafico.

**only marks**

Molto esplicito: metterà un segno su ogni punto.

**scatter**

Quando si usa scatter, i punti vengono colorati in base a un valore; il colore è dato dal parametro meta spiegato sotto.

**mark=halfcircle**\*

Il tipo di segno da usare in ogni punto; controlla la guida di riferimento per un elenco dei valori possibili.

**mark size=2.9pt**

La dimensione di ogni segno; si possono usare unità diverse.

**table\[meta=ma]{scattered\_example.dat};**

Qui il comando table dice a LaTeX che i dati da tracciare si trovano in un file. Il parametro meta=ma viene passato per scegliere la colonna che determina il colore di ogni punto. Tra parentesi graffe c'è il nome del file dati.

### Grafici a barre

I grafici a barre (noti anche come bar chart e bar plot) sono usati per visualizzare dati raccolti, soprattutto dati statistici su una certa popolazione. I grafici a barre in `pgfplots` sono altamente configurabili, ma qui mostreremo un esempio semplice:

```latex
\begin{tikzpicture}
\begin{axis}[
	x tick label style={
		/pgf/number format/1000 sep=},
	ylabel=Anno,
	enlargelimits=0.05,
	legend style={at={(0.5,-0.1)},
	anchor=north,legend columns=-1},
	ybar interval=0.7,
]
\addplot
	coordinates {(2012,408184) (2011,408348)
		 (2010,414870) (2009,412156)};
\addplot
	coordinates {(2012,388950) (2011,393007)
		(2010,398449) (2009,395972)};
\legend{Uomini,Donne}
\end{axis}
\end{tikzpicture}
```

[Apri questo `pgfplots` esempio di codice per il grafico a barre in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+bar+chart+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Btextcomp%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A%09x+tick+label+style%3D%7B%0A%09%09%2Fpgf%2Fnumber+format%2F1000+sep%3D%7D%2C%0A%09ylabel%3DYear%2C%0A%09enlargelimits%3D0.05%2C%0A%09legend+style%3D%7Bat%3D%7B%280.5%2C-0.1%29%7D%2C%0A%09anchor%3Dnorth%2Clegend+columns%3D-1%7D%2C%0A%09ybar+interval%3D0.7%2C%0A%5D%0A%5Caddplot+%0A%09coordinates+%7B%282012%2C408184%29+%282011%2C408348%29%0A%09%09+%282010%2C414870%29+%282009%2C412156%29%7D%3B%0A%5Caddplot+%0A%09coordinates+%7B%282012%2C388950%29+%282011%2C393007%29+%0A%09%09%282010%2C398449%29+%282009%2C395972%29%7D%3B%0A%5Clegend%7BMen%2CWomen%7D%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

L'output di questo codice è mostrato nell'immagine qui sotto—il preambolo del documento LaTeX viene aggiunto automaticamente quando apri il link:

![Barchartsexample.png](/files/5943d84bb4e51b8733b2ecda06a8912e2dd22b67)

#### Spiegazione del codice

La figura inizia con la ([già spiegata in precedenza](#introduction)) dichiarazione degli `tikzpicture` e `axis` ambienti, ma la `axis` dichiarazione ha una serie di nuovi parametri:

**x tick label style={/pgf/number format/1000 sep=}**

Questo pezzo di codice definisce uno stile completo per il grafico. Con questo stile puoi includere diversi comandi \addplot all'interno di questo ambiente axis: si adatteranno e staranno bene insieme senza ulteriori ritocchi (il parametro ybar descritto sotto è obbligatorio affinché questo funzioni).

**enlargelimits=0.05.**

Ampliare i limiti in un grafico a barre è necessario perché questo tipo di grafico spesso richiede un po' di spazio extra sopra la barra per apparire meglio e/o aggiungere un'etichetta. Il numero 0.05 è relativo all'altezza totale del grafico.

**legend style={at={(0.5,-0.2)}, anchor=north,legend columns=-1}**

Di nuovo, nella maggior parte dei casi funzionerà perfettamente. Se necessario, cambia il valore di -0.2 per posizionare la legenda più vicino/lontano dall'asse x.

**ybar interval=0.7,**

Spessore di ogni barra. 1 significa che le barre saranno una accanto all'altra senza spazi e 0 significa che non ci saranno barre, ma solo linee verticali.

Il `coordinates` in questo tipo di grafico determina il punto di base della barra e la sua altezza.

Le etichette sull'asse y mostreranno fino a 4 cifre. Se i numeri con cui stai lavorando sono maggiori di 9999 `pgfplots` userà la stessa notazione dell'esempio.

## Grafici 3D

`pgfplots` ha le capacità di grafici 3D che ti aspetteresti da un software di plotting.

### Tracciare espressioni matematiche

C'è un semplice esempio a riguardo in [introduzione](#introduction), ora lavoriamo su qualcosa di un po' più complesso:

```latex
\begin{tikzpicture}
\begin{axis}[
    title={Esempio usando il parametro mesh},
    hide axis,
    colormap/cool,
]
\addplot3[
    mesh,
    samples=50,
    domain=-8:8,
]
{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\addlegendentry{\(\frac{sin(r)}{r}\)}
\end{axis}
\end{tikzpicture}
```

[Apri questo `pgfplots` Esempio 3D in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+3D+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++title%3DExample+using+the+mesh+parameter%2C%0A++++hide+axis%2C%0A++++colormap%2Fcool%2C%0A%5D%0A%5Caddplot3%5B%0A++++mesh%2C%0A++++samples%3D50%2C%0A++++domain%3D-8%3A8%2C%0A%5D%0A%7Bsin%28deg%28sqrt%28x%5E2%2By%5E2%29%29%29%2Fsqrt%28x%5E2%2By%5E2%29%7D%3B%0A%5Caddlegendentry%7B%5C%28%5Cfrac%7Bsin%28r%29%7D%7Br%7D%5C%29%7D%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

L'output di questo codice è mostrato nell'immagine qui sotto—il preambolo del documento LaTeX viene aggiunto automaticamente quando apri il link:

![Pgfplots3dexample.png](/files/0f3769b34271f1a20f78b9b55d5045f7c820969e)

#### Spiegazione del codice

La maggior parte dei comandi qui è già stata spiegata, ma ci sono 3 cose nuove:

**hide axis**

Questa opzione nell'ambiente axis è autoesplicativa: l'asse non verrà mostrato.

**colormap/cool**

È la combinazione di colori da usare nel grafico. Controlla la guida di riferimento per altre combinazioni di colori.

**mesh**

Anche questa opzione è autoesplicativa; controlla anche il parametro surf nell'esempio introduttivo.

**Nota**: Quando si lavora con funzioni trigonometriche `pgfplots` usa i gradi come unità predefinita; se l'angolo è in radianti (come in questo esempio) devi usare la `deg` funzione per convertire in gradi.

### Grafici di contorno

In `pgfplots` è possibile tracciare grafici di contorno, ma i dati devono essere pre-calcolati da un programma esterno. Vediamo un esempio:

```latex
\begin{tikzpicture}
\begin{axis}
[
    title={Grafico di contorno, vista dall'alto},
    view={0}{90}
]
\addplot3[
    contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}
]
{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\end{axis}
\end{tikzpicture}
```

[Apri questo `pgfplots` esempio di grafico di contorno in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+contour+plot+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5B%0A++++title%3D%7BContour+plot%2C+view+from+top%7D%2C%0A++++view%3D%7B0%7D%7B90%7D%0A%5D%0A%5Caddplot3%5B%0A++++contour+gnuplot%3D%7Blevels%3D%7B0.8%2C+0.4%2C+0.2%2C+-0.2%7D%7D%0A%5D%0A%7Bsin%28deg%28sqrt%28x%5E2%2By%5E2%29%29%29%2Fsqrt%28x%5E2%2By%5E2%29%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cend%7Bdocument%7D)

L'output di questo codice è mostrato nell'immagine qui sotto—il preambolo del documento LaTeX viene aggiunto automaticamente quando apri il link:

![Contourplotexample.png](/files/1c9af7fdc8c2d4a2b6afaa86907995a8676393f4)

#### Spiegazione del codice

Questo è un grafico di alcune linee di contorno per la stessa equazione usata nella sezione precedente. Il valore del `title` parametro è tra parentesi graffe perché contiene una virgola, quindi usiamo le parentesi di raggruppamento per evitare qualsiasi confusione con gli altri parametri passati alla `\begin{axis}` dichiarazione. Ci sono due nuovi comandi:

**view={0}{90}**

Questo cambia la vista del grafico. Il parametro viene passato all'ambiente axis, il che significa che può essere usato in qualsiasi altro tipo di grafico 3D. Il primo valore è una rotazione, in gradi, attorno all'asse z; il secondo valore serve a ruotare la vista attorno all'asse x. In questo esempio, combinando una rotazione di 0° attorno all'asse z e una rotazione di 90° attorno all'asse x, otteniamo una vista del grafico dall'alto.

**contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}**

Questa riga di codice fa due cose: prima, dice a LaTeX di usare il software esterno gnuplot per calcolare le linee di contorno; questo funziona bene in Overleaf, ma se vuoi usare questo comando nella tua installazione locale di LaTeX devi prima installare gnuplot (anche matlab funzionerà; in tal caso scrivi matlab invece di gnuplot nel comando). Secondo, il parametro secondario levels è un elenco di valori dei livelli di elevazione a cui devono essere calcolate le linee di contorno.

### Tracciare una superficie dai dati

Per tracciare un insieme di dati in una superficie 3D ci servono solo le coordinate di ogni punto. Queste coordinate possono essere un insieme non ordinato o, in questo caso, una matrice:

```latex
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
coordinates {
(0,0,0) (0,1,0) (0,2,0)

(1,0,0) (1,1,0.6) (1,2,0.7)

(2,0,0) (2,1,0.7) (2,2,1.8)
};
\end{axis}
\end{tikzpicture}
```

[Apri questo `pgfplots` Esempio di superficie 3D in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=plotting+a+surface+from+data+with+pgfplots\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot3%5B%0A++++surf%2C%0A%5D+%0Acoordinates+%7B%0A%280%2C0%2C0%29+%280%2C1%2C0%29+%280%2C2%2C0%29%0A%0A%281%2C0%2C0%29+%281%2C1%2C0.6%29+%281%2C2%2C0.7%29%0A%0A%282%2C0%2C0%29+%282%2C1%2C0.7%29+%282%2C2%2C1.8%29%0A%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cend%7Bdocument%7D)

L'output di questo codice è mostrato nell'immagine qui sotto—il preambolo del documento LaTeX viene aggiunto automaticamente quando apri il link:

![3dsurfacedata.png](/files/0510e31fc7c4017db8821602691cfc97788ba0e2)

#### Spiegazione dei dati

I punti passati al `coordinates` parametro vengono trattati come se fossero contenuti in una matrice 3 × 3, usando una riga vuota come separatore per ogni riga della matrice.

Tutte le opzioni per i grafici 3D in questo articolo si applicano alle superfici di dati.

### Grafico parametrico

La sintassi per i grafici parametrici è leggermente diversa. Vediamo un esempio:

```latex
\begin{tikzpicture}
\begin{axis}
    [
    view={60}{30},
    ]
\addplot3[
    domain=0:5*pi,
    samples = 60,
    samples y=0,
]
({sin(deg(x))},
{cos(deg(x))},
{x});
\end{axis}
\end{tikzpicture}
```

[Apri questo `pgfplots` esempio di grafico parametrico in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+parametric+plot+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A++++%5B%0A++++view%3D%7B60%7D%7B30%7D%2C%0A++++%5D%0A%5Caddplot3%5B%0A++++domain%3D0%3A5%2Api%2C%0A++++samples+%3D+60%2C%0A++++samples+y%3D0%2C%0A%5D%0A%28%7Bsin%28deg%28x%29%29%7D%2C%0A%7Bcos%28deg%28x%29%29%7D%2C%0A%7Bx%7D%29%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

L'output di questo codice è mostrato nell'immagine qui sotto—il preambolo del documento LaTeX viene aggiunto automaticamente quando apri il link:

![Parametricplot.png](/files/3dcc62c61bfdb6b820212b9a4c60d50a16922d27)

#### Spiegazione del codice

In questo esempio ci sono solo due cose nuove: prima, il `samples y=0` per impedire `pgfplots` che i punti estremi della spirale si uniscano e; in secondo luogo, il modo in cui la funzione da tracciare viene passata all' `addplot3` ambiente. Ogni funzione di parametro è raggruppata tra parentesi graffe e i tre parametri sono delimitati con una parentesi.

## Guida di riferimento

| Comando/Opzione/Ambiente | Descrizione                                                                                                                               | Valori possibili                                                                                                                                                                                                                                                                                                |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **axis**                 | Grafici normali con scala lineare                                                                                                         |                                                                                                                                                                                                                                                                                                                 |
| **semilogxaxis**         | scala logaritmica di x e scala normale per y                                                                                              |                                                                                                                                                                                                                                                                                                                 |
| **semilogyaxis**         | scala logaritmica per y e scala normale per x                                                                                             |                                                                                                                                                                                                                                                                                                                 |
| **loglogaxis**           | scala logaritmica per gli assi x e y                                                                                                      |                                                                                                                                                                                                                                                                                                                 |
| **axis lines**           | cambia il modo in cui vengono disegnati gli assi. il valore predefinito è '*casella*                                                      | box, left, middle, center, right, none                                                                                                                                                                                                                                                                          |
| **legend pos**           | posizione del riquadro della legenda                                                                                                      | south west, south east, north west, north east, outer north east                                                                                                                                                                                                                                                |
| **mark**                 | tipo di segni usati nel tracciamento dei dati. Quando si usa un carattere singolo, l'aspetto del carattere è molto simile al segno reale. | \*, x , +, \|, o, asterisk, star, 10-pointed star, oplus, oplus\*, otimes, otimes\*, square, square\*, triangle, triangle\*, diamond, halfdiamond\*, halfsquare\*, right\*, left\*, Mercedes star, Mercedes star flipped, halfcircle, halfcircle\*, pentagon, pentagon\*, cubes. (cubes only work on 3d plots). |
| **colormap**             | combinazione di colori da usare in un grafico, può essere personalizzata ma esistono alcune colormap predefinite                          | hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet.                                                                                                                                                                                                                                      |

## Approfondimenti

Per ulteriori informazioni vedi:

* [Uso dei colori in LaTeX](/latex/it/formattazione/13-using-colors-in-latex.md)
* [Pacchetto TikZ](/latex/it/figure-e-tabelle/05-tikz-package.md)
* [Esternalizzare pgfplots e tikzpictures](/latex/it/domande-e-risposte/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md)
* [Inserimento di immagini](/latex/it/altri-argomenti/27-inserting-images.md)
* [Elenchi di tabelle e figure](/latex/it/figure-e-tabelle/03-lists-of-tables-and-figures.md)
* [Posizionamento di immagini e tabelle](/latex/it/figure-e-tabelle/02-positioning-images-and-tables.md)
* [Disegnare diagrammi direttamente in LaTeX](/latex/it/figure-e-tabelle/04-picture-environment.md)
* [Il **pgfplots** documentazione del pacchetto](http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplots.pdf).
* [I pacchetti TikZ e PGF: manuale per la versione 3.0.0](http://mirror.utexas.edu/ctan/graphics/pgf/base/doc/pgfmanual.pdf)
* [Esempi di TikZ e PGF su TeXample.net](http://www.texample.net/tikz/examples/all/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/latex/it/specifico-per-argomento/08-pgfplots-package.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
