> For the complete documentation index, see [llms.txt](https://overleaf-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://overleaf-pro.ayaka.space/latex/da/fag-specifikt/08-pgfplots-package.md).

# Pgfplots-pakken

## Introduktion

Den `pgfplots` pakken, som er baseret på [`TikZ`](/latex/da/figurer-og-tabeller/05-tikz-package.md), er et kraftfuldt visualiseringsværktøj og ideelt til at skabe videnskabelig/teknisk grafik. Den grundlæggende idé er, at du leverer inputdata/formlen, og `pgfplots` gør resten.

### Dokumentets præambel

For at bruge `pgfplots` For at tilføje pakken i dit dokument skal du tilføje følgende linje til din præambel:

`\usepackage{pgfplots}`

Du kan også konfigurere adfærden af `pgfplots` i dokumentets præambel. For eksempel, for at ændre størrelsen på hvert plot og sikre bagudkompatibilitet (anbefalet) skal du tilføje den næste linje:

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

Dette ændrer størrelsen på hver `pgfplot` figur til 10 centimeter, hvilket er enormt; du kan bruge andre enheder (pt, mm, in). *compat* parameteren sikrer, at koden virker med pakkeversion 1.9 eller nyere.

### Kompileringstid (kort baggrund)

Da den oprindelige TeX-motor blev udtænkt/skrevet for mere end 40 år siden, var den ikke designet til *direkte* produktion af grafik—disse skulle være filer oprettet af eksterne programmer (f.eks. MetaPost) og importeret i det typograferede dokument. Fremkomsten af pdfTeX—som er tæt baseret på den oprindelige TeX-software—bragte muligheden for at skabe grafik *direkte* ved at bruge pdfTeX's nye indbyggede TeX-sproglige kommandoer (kaldet *primitiver*) som kan outputte de PDF-operatorer/data, der kræves for at producere grafik. Oprettelsen af pdfTeX førte til udviklingen af avancerede LaTeX-grafikpakker, såsom `TikZ`, `pgfplots` osv., som kan producere grafik kodet ved hjælp af LaTeX-kommandoer på højt niveau.

Men bag kulisserne og dybt inde i pdfTeX-motoren (og andre motorer) skal disse LaTeX-grafikkommandoer på højt niveau behandles ved at "konvertere" dem tilbage til (primitive) kommandoer på lavt niveau i pdfTeX-motoren, som faktisk genererer (outputter) de PDF-operatorer, der kræves for at producere den/de resulterende figur(er). Denne behandling af grafiske LaTeX-kommandoer—udvidelse og eksekvering af primitiver—kan tage en ikke ubetydelig mængde tid. Selv en enkelt LaTeX-grafikkommando på højt niveau kan sammen med de tilsvarende data kræve gentagen udførelse af *mange* primitive kommandoer i TeX-motoren på lavt niveau. Set fra slutbrugerens perspektiv kan dokumenter, der indeholder flere `pgfplots` figurer og/eller meget komplekse grafikker tage en betydelig mængde tid at renderere (kompilere).

### Reduktion af kompileringstid

For at øge hastigheden af dokumentkompileringen kan du konfigurere `pgfplots` pakken til at eksportere figurerne til separate PDF-filer og derefter importere dem i dokumentet: kompiler én gang, og genbrug derefter figurerne. For at gøre det skal du tilføje koden nedenfor til præamblen:

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

Se [denne hjælpeartikel](/latex/da/sporgsmal-og-svar/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) for flere detaljer om, hvordan du opsætter tikz-eksternalisering i dit Overleaf-projekt.

## Grundlæggende eksempel (også med eksternalisering af figurerne)

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

% Vi vil eksternalisere figurerne
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

Det første eksempel er 2D- og 3D-matematiske udtryk plottet side om side.

%Her begynder 2D-plottet
\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%Her slutter 2D-plottet
\hskip 5pt
%Her begynder 3D-plottet
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
%Her slutter 3D-plottet

\end{document}
```

[Åbn dette `pgfplots` eksempel i 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)

Følgende billede viser resultatet, som koden ovenfor producerer:

![Plgplotsex1OLV2.png](/files/91067d6936809d4c62bb69f407bec82817f254e9)

### Forklaring af koden

Fordi `pgfplots` er baseret på `tikz` plottet skal være inde i et `tikzpicture` miljø. Derefter vil miljødeklarationen `\begin{axis}`, `\end{axis}` indstille den korrekte skalering for plottet—se [Referencevejledning](#reference-guide) for andre akse-miljøer.

For at tilføje et egentligt plot bruges kommandoen `\addplot[color=red]{log(x)};` bruges. Inden for de firkantede parenteser `[...]`, kan der sendes nogle indstillinger; her sætter vi `color-` plottets `rød`til . De firkantede parenteser er obligatoriske; hvis der ikke sendes nogen indstillinger, skal du lade et tomt mellemrum være mellem dem. Inde i krølleparenteserne indsætter du funktionen, der skal plottes. Det er vigtigt at huske, at denne kommando skal slutte med et semikolon (;).

For at placere et andet plot ved siden af det første skal du erklære et nyt `tikzpicture` miljø. Indsæt ikke en ny linje, men et lille tomt mellemrum; i dette tilfælde `hskip 10pt` vil indsætte et tomt mellemrum på 10 pt i bredden.

Resten af syntaksen er den samme, bortset fra `\addplot3 [surf,]{exp(-x^2-y^2)*x};`. Dette vil tilføje et 3D-plot, og indstillingen `surf` inden for de firkantede parenteser angiver, at det er et overfladeplot. Funktionen, der skal plottes, skal placeres inde i krølleparenteserne. Igen, glem ikke at sætte et semikolon (;) i slutningen af kommandoen.

**Bemærk**: Det anbefales som god praksis at indrykke koden—se det andet plot i eksemplet ovenfor—og at tilføje et komma (,) i slutningen af hver indstilling, der sendes til `\addplot`. På den måde er koden mere læselig og det er lettere at tilføje yderligere indstillinger, hvis det bliver nødvendigt.

## 2D-plots

`pgfplots`s 2D-plotfunktioner er omfattende—og du kan tilpasse dine plots, så de passer til dine behov. Ikke desto mindre giver standardindstillingerne normalt meget gode resultater, så alt, du skal gøre, er at levere dataene, og LaTeX gør resten.

### Plotning af matematiske udtryk

Her er et eksempel:

```latex
\begin{tikzpicture}
\begin{axis}[
    axis lines = left,
    xlabel = \(x\),
    ylabel = {\(f(x)\)},
]
%Nedenfor er den røde parabel defineret
\addplot [
    domain=-10:10,
    samples=100,
    color=red,
]
{x^2 - 2*x - 1};
\addlegendentry{\(x^2 - 2x - 1\)}
%Nedenfor er den blå parabel defineret
\addplot [
    domain=-10:10,
    samples=100,
    color=blue,
    ]
    {x^2 + 2*x + 1};
\addlegendentry{\(x^2 + 2x + 1\)}

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

[Åbn dette `pgfplots` eksempel i 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)

Resultatet af denne kode vises i billedet nedenfor—LaTeX-dokumentets præambel tilføjes automatisk, når du åbner linket:

![Plgplotsex2.png](/files/69fb8c5d351e6b6b80193c73e5fb46859f83c2f6)

#### Forklaring af koden

Lad os analysere de nye kommandoer linje for linje:

**akse-linjer = venstre.**

Dette vil sætte akserne kun på venstre og nederste side af plottet i stedet for standardboksen. Yderligere tilpasningsmuligheder findes i referenceguiden.

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

Selvforklarende parameternavne; disse lader dig sætte en label på den vandrette og lodrette akse. Bemærk værdien af ylabel mellem krølleparenteser; disse parenteser fortæller pgfplots, hvordan teksten skal grupperes. xlabel kunne også have haft parenteser. Dette er nyttigt for komplicerede labels, som ellers kan forvirre pgfplots.

**\addplot.**

Dette vil tilføje et plot til aksen; den generelle brug blev beskrevet i introduktionen. Der er to nye parametre i dette eksempel.

**domain=-10:10.**

Dette fastlægger intervallet af værdier for x.

**samples=100.**

Bestemmer antallet af punkter i det interval, der er defineret af domain. Jo højere værdien af samples er, desto skarpere bliver grafen, men det vil tage længere tid at renderere.

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

Dette tilføjer signaturen, som identificerer funktionen x^2 - 2x - 1.

For at tilføje en anden graf til plottet skal du blot skrive en ny `\addplot` post.

### Plotning ud fra data

Videnskabelig forskning giver ofte data, som skal analyseres. Det næste eksempel viser, hvordan man plotter data med *pgfplots*:

```latex
Plotning ud fra data:

\begin{tikzpicture}
\begin{axis}[
    title={Temperaturafhængighed af opløseligheden af CuSO\(_4\cdot\)5H\(_2\)O},
    xlabel={Temperatur [\textcelsius]},
    ylabel={Opløselighed [g pr. 100 g vand]},
    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{Mænd,Kvinder}

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

[Åbn dette `pgfplots` eksempel i 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)

Resultatet af denne kode vises i billedet nedenfor—LaTeX-dokumentets præambel tilføjes automatisk, når du åbner linket:

![Plgplotsex3.png](/files/aff3e152e684b076a3599602ad1e192ae7ca1550)

#### Forklaring af koden

Der er nogle nye kommandoer og parametre her:

**title={Temperaturafhængighed af opløseligheden af CuSO(\_4\cdot)5H(\_2)O}.**

Som du måske forventer, tildeler dette en titel til figuren. Titlen vil blive vist over plottet.

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

Nedre og øvre grænser for x- og y-akserne.

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

Punkter, hvor markeringerne placeres. Hvis feltet er tomt, sættes ticks automatisk.

**legend pos=north west.**

Placeringen af signaturrammen. Se referenceguiden for flere muligheder.

**ymajorgrids=true.**

Dette aktiverer/deaktiverer gitterlinjer ved tick-positionerne på y-aksen. Brug xmajorgrids for at aktivere gitterlinjer på x-aksen.

**grid style=dashed.**

Selvforklarende. For at vise stiplede gitterlinjer.

**mark=square.**

Dette tegner en firkantet markering ved hvert punkt i koordinat-arrayet. Hver markering forbindes med den næste af en lige linje.

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

Koordinaterne for de punkter, der skal plottes. Dette er de data, du vil analysere grafisk.

Hvis dataene er i en fil, hvilket er tilfældet det meste af tiden; i stedet for kommandoerne `\addplot` og `coordinates` skal du bruge `\addplot table {file_with_the_data.dat}`, er resten af indstillingerne gyldige i dette miljø.

### Spredningsplots

Spredningsplots bruges til at repræsentere information ved hjælp af en form for markeringer og bruges ofte, når man beregner statistisk regression. I dette eksempel vil vi oprette et spredningsplot ved hjælp af data indeholdt i en fil kaldet `scattered_example.dat`, hvor dataene ser sådan ud:

```
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
...
```

Vores spredningsplot bruger de første to kolonner i dataene:

```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/f813564469947166f7507b24c91d427aa77abdfb)

[Åbn et eksempel på et spredningsplot-projekt i Overleaf (indeholder datafilen `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=)

#### Forklaring af koden

Parametrene, der sendes til `axis` og `addplot` miljøerne kan også bruges i et dataplot, bortset fra `scatter`. Nedenfor er en beskrivelse af koden:

**enlarge limits=false**

Dette vil gøre akserne mindre, så punktet med de maksimale og minimale værdier ligger på kanten af plottet.

**only marks**

Meget eksplicit; vil sætte en markering på hvert punkt.

**scatter**

Når scatter bruges, farves punkterne afhængigt af en værdi; farven gives af meta-parameteren, som forklares nedenfor.

**mark=halfcircle**\*

Den type markering, der skal bruges ved hvert punkt; se referenceguiden for en liste over mulige værdier.

**mark size=2.9pt**

Størrelsen af hver markering; forskellige enheder kan bruges.

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

Her fortæller table-kommandoen latex, at de data, der skal plottes, er i en fil. Parameteren meta=ma sendes for at vælge den kolonne, der bestemmer farven på hvert punkt. Inde i krølleparenteserne er navnet på datafilen.

### Søjlediagrammer

Søjlediagrammer (også kendt som bar charts og bar plots) bruges til at vise indsamlede data, hovedsageligt statistiske data om en eller anden population. Søjlediagrammer i `pgfplots` er meget konfigurerbare, men her vil vi vise et enkelt eksempel:

```latex
\begin{tikzpicture}
\begin{axis}[
	x tick label style={
		/pgf/number format/1000 sep=},
	ylabel=År,
	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{Mænd,Kvinder}
\end{axis}
\end{tikzpicture}
```

[Åbn dette `pgfplots` eksempel på søjlekode i 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)

Resultatet af denne kode vises i billedet nedenfor—LaTeX-dokumentets præambel tilføjes automatisk, når du åbner linket:

![Barchartsexample.png](/files/3acc9835e4e4b1a24823ab38ae6dce74bcfbd512)

#### Forklaring af koden

Figuren starter med den ([tidligere forklarede](#introduction)) deklaration af `tikzpicture` og `axis` miljøerne, men `axis` deklarationen har en række nye parametre:

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

Dette stykke kode definerer en komplet stil for plottet. Med denne stil kan du inkludere flere \addplot-kommandoer i dette axis-miljø; de vil passe sammen og se pæne ud uden yderligere tilpasninger (ybar-parameteren beskrevet nedenfor er obligatorisk for at dette virker).

**enlargelimits=0.05.**

At udvide grænserne i et søjlediagram er nødvendigt, fordi denne type plots ofte kræver lidt ekstra plads over søjlen for at se bedre ud og/eller tilføje en label. Tallet 0.05 er relativt til plottets samlede højde.

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

Igen vil dette som regel fungere helt fint det meste af tiden. Hvis det er nødvendigt, kan du ændre værdien af -0.2 for at placere signaturen tættere på/længere fra x-aksen.

**ybar interval=0.7,**

Tykkelsen af hver søjle. 1 betyder, at søjlerne ligger ved siden af hinanden uden mellemrum, og 0 betyder, at der ikke vil være nogen søjler, men kun lodrette linjer.

Den `coordinates` i denne type plot bestemmer søjlens basispunkt og dens højde.

Etiketterne på y-aksen vises med op til 4 cifre. Hvis de tal, du arbejder med, er større end 9999 `pgfplots` vil bruge samme notation som i eksemplet.

## 3D-plots

`pgfplots` har de 3D-plotningsfunktioner, som du kan forvente i et plotteprogram.

### Plotning af matematiske udtryk

Der er et enkelt eksempel på dette i [introduktionen](#introduction), lad os arbejde med noget lidt mere komplekst:

```latex
\begin{tikzpicture}
\begin{axis}[
    title=Eksempel med brug af mesh-parameteren,
    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}
```

[Åbn dette `pgfplots` 3D-eksempel i 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)

Resultatet af denne kode vises i billedet nedenfor—LaTeX-dokumentets præambel tilføjes automatisk, når du åbner linket:

![Pgfplots3dexample.png](/files/acdba3a952039911740cba43ede25e2cca69e107)

#### Forklaring af koden

De fleste af kommandoerne her er allerede blevet forklaret, men der er 3 nye ting:

**hide axis**

Denne indstilling i axis-miljøet er selvforklarende; akserne vil ikke blive vist.

**colormap/cool**

Er det farveskema, der skal bruges i plottet. Se referenceguiden for flere farveskemaer.

**mesh**

Denne indstilling er også selvforklarende; se også surf-parameteren i det indledende eksempel.

**Bemærk**: Når man arbejder med trigonometriske funktioner `pgfplots` bruger som standard grader som enheder; hvis vinklen er i radianer (som i dette eksempel), skal du bruge `deg` funktionen til at omregne til grader.

### Konturplot

I `pgfplots` pgfplots er det muligt at plotte konturplots, men dataene skal være forudberegnet af et eksternt program. Lad os se et eksempel:

```latex
\begin{tikzpicture}
\begin{axis}
[
    title={Konturplot, set ovenfra},
    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}
```

[Åbn dette `pgfplots` eksempel på konturplot i 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)

Resultatet af denne kode vises i billedet nedenfor—LaTeX-dokumentets præambel tilføjes automatisk, når du åbner linket:

![Contourplotexample.png](/files/9d71d9e1f9c12d48cc2d987b6e315b4e3247a1e6)

#### Forklaring af koden

Dette er et plot af nogle konturlinjer for den samme ligning, som blev brugt i den forrige sektion. Værdien af `titel` parameteren er inde i krølleparenteser, fordi den indeholder et komma, så vi bruger grupperingsparenteser for at undgå enhver forvirring med de andre parametre, der sendes til `\begin{axis}` deklarationen. Der er to nye kommandoer:

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

Dette ændrer plottets visning. Parameteren sendes til axis-miljøet, hvilket betyder, at dette kan bruges i enhver anden type 3D-plot. Den første værdi er en rotation i grader omkring z-aksen; den anden værdi er rotation af visningen omkring x-aksen. I dette eksempel ender vi, når vi kombinerer en rotation på 0° omkring z-aksen og en rotation på 90° omkring x-aksen, med et view af plottet ovenfra.

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

Denne linje kode gør to ting: Først fortæller den LaTeX at bruge den eksterne software gnuplot til at beregne konturlinjerne; dette fungerer fint i Overleaf, men hvis du vil bruge denne kommando i din lokale LaTeX-installation, skal du først installere gnuplot (matlab vil også virke; i så fald skal du skrive matlab i stedet for gnuplot i kommandoen). For det andet er under-parameteren levels en liste over værdier for højdeniveauer, hvor konturlinjerne skal beregnes.

### Plot af en overflade ud fra data

For at plotte et sæt data til en 3D-overflade behøver vi kun koordinaterne for hvert punkt. Disse koordinater kan være et uordnet sæt eller, i dette tilfælde, en matrix:

```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}
```

[Åbn dette `pgfplots` 3D-overfladeeksempel i 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)

Resultatet af denne kode vises i billedet nedenfor—LaTeX-dokumentets præambel tilføjes automatisk, når du åbner linket:

![3dsurfacedata.png](/files/05ef9374c9786e1e87378fb9e7bc228b11e94640)

#### Forklaring af dataene

De punkter, der sendes til `coordinates` parameteren, behandles som værende indeholdt i en 3 × 3-matrix, hvor en tom linje bruges som separator for hver matrixrække.

Alle mulighederne for 3D-plots i denne artikel gælder for dataoverflader.

### Parametrisk plot

Syntaksen for parametriske plots er lidt anderledes. Lad os se et eksempel:

```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}
```

[Åbn dette `pgfplots` eksempel på parametrisk plot i 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)

Resultatet af denne kode vises i billedet nedenfor—LaTeX-dokumentets præambel tilføjes automatisk, når du åbner linket:

![Parametricplot.png](/files/21649ec996cbc92e959930024fb67c3c5b9fa1f6)

#### Forklaring af koden

Der er kun to nye ting i dette eksempel: for det første `samples y=0` for at forhindre `pgfplots` at forbinde spiralens yderpunkter og; for det andet måden, funktionen der skal plottes, sendes til `addplot3` miljøet. Hver parameterfunktion grupperes inde i krølleparenteser, og de tre parametre adskilles med en parentes.

## Referencevejledning

| Kommando/indstilling/miljø | Beskrivelse                                                                                                                | Mulige værdier                                                                                                                                                                                                                                                                                                  |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **axis**                   | Normale plots med lineær skalering                                                                                         |                                                                                                                                                                                                                                                                                                                 |
| **semilogxaxis**           | logaritmisk skalering af x og normal skalering for y                                                                       |                                                                                                                                                                                                                                                                                                                 |
| **semilogyaxis**           | logaritmisk skalering for y og normal skalering for x                                                                      |                                                                                                                                                                                                                                                                                                                 |
| **loglogaxis**             | logaritmisk skalering for x- og y-akserne                                                                                  |                                                                                                                                                                                                                                                                                                                 |
| **axis lines**             | ændrer den måde, akserne tegnes på. standard er '*boks*                                                                    | box, left, middle, center, right, none                                                                                                                                                                                                                                                                          |
| **legend pos**             | placering af signaturrammen                                                                                                | south west, south east, north west, north east, outer north east                                                                                                                                                                                                                                                |
| **mark**                   | typen af markeringer, der bruges i dataplottet. Når der bruges et enkelt tegn, ligner tegnet meget den faktiske markering. | \*, 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 virker kun i 3D-plots). |
| **colormap**               | farveskema, der skal bruges i et plot; kan tilpasses, men der findes nogle foruddefinerede colormaps                       | hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet.                                                                                                                                                                                                                                      |

## Yderligere læsning

For mere information se:

* [Brug af farver i LaTeX](/latex/da/formatering/13-using-colors-in-latex.md)
* [TikZ-pakken](/latex/da/figurer-og-tabeller/05-tikz-package.md)
* [Eksternalisering af pgfplots og tikzbilleder](/latex/da/sporgsmal-og-svar/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md)
* [Indsættelse af billeder](/latex/da/flere-emner/27-inserting-images.md)
* [Lister over tabeller og figurer](/latex/da/figurer-og-tabeller/03-lists-of-tables-and-figures.md)
* [Placering af billeder og tabeller](/latex/da/figurer-og-tabeller/02-positioning-images-and-tables.md)
* [Tegning af diagrammer direkte i LaTeX](/latex/da/figurer-og-tabeller/04-picture-environment.md)
* [Den **pgfplots** pakkedokumentation](http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplots.pdf).
* [TikZ- og PGF-pakkerne: manual til version 3.0.0](http://mirror.utexas.edu/ctan/graphics/pgf/base/doc/pgfmanual.pdf)
* [TikZ- og PGF-eksempler på 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://overleaf-pro.ayaka.space/latex/da/fag-specifikt/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.
