> 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/cs/pro-konkretni-obor/08-pgfplots-package.md).

# Balíček pgfplots

## Úvod

Ta `pgfplots` balíček, který je založen na [`TikZ`](/latex/cs/obrazky-a-tabulky/05-tikz-package.md), je výkonný nástroj pro vizualizaci a ideální pro vytváření vědeckých/technických grafik. Základní myšlenka je, že zadáte vstupní data/vzorec a `pgfplots` udělá zbytek.

### Preambule dokumentu

Chcete-li použít `pgfplots` balíček ve svém dokumentu přidejte do preambule následující řádek:

`\usepackage{pgfplots}`

Také můžete nakonfigurovat chování `pgfplots` v preambuli dokumentu. Například pro změnu velikosti každého grafu a zajištění zpětné kompatibility (doporučeno) přidejte následující řádek:

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

Tím se změní velikost každého `pgfplot` obrázku na 10 centimetrů, což je hodně; můžete použít jiné jednotky (pt, mm, in). *compat* parametr zajišťuje, že kód bude fungovat s verzí balíčku 1.9 nebo novější.

### Doba kompilace (stručné pozadí)

Když byl původní engine TeXu koncipován/psán, před více než 40 lety, nebyl navržen pro *přímou* tvorbu grafiky — ta měla být ve formě souborů vytvořených externími programy (např. MetaPost) a vložených do vysázeného dokumentu. Příchod pdfTeXu — který je úzce založen na původním softwaru TeX — přinesl možnost vytvářet grafiku *přímo* pomocí nových vestavěných příkazů jazyka TeX v pdfTeXu (nazývaných *primitivy*) které mohou generovat výstup PDF operátorů/dat potřebných k vytvoření grafiky. Vznik pdfTeXu vedl k vývoji sofistikovaných balíčků LaTeXu pro grafiku, jako je `TikZ`, `pgfplots` atd., schopných vytvářet grafiku kódovanou pomocí vysoceúrovňových příkazů LaTeXu.

Nicméně v pozadí, hluboko uvnitř enginu pdfTeX (a dalších enginů), je třeba tyto vysoceúrovňové příkazy LaTeXu pro grafiku zpracovat tím, že se „převedou“ zpět na nízkoúrovňové (primitivní) příkazy enginu pdfTeX, které skutečně generují (vypisují) PDF operátory potřebné k vytvoření výsledného obrázku (obrázků). Toto zpracování grafických příkazů LaTeXu — rozšíření a vykonání primitiv — může zabrat nezanedbatelné množství času. I jediný vysoceúrovňový grafický příkaz LaTeXu spolu s odpovídajícími daty může vyžadovat opakované vykonání *mnoha* nízkoúrovňových (primitivních) příkazů enginu TeX. Z pohledu koncového uživatele mohou dokumenty obsahující více `pgfplots` obrázků a/nebo velmi složitou grafiku potřebovat ke zpracování (kompilaci) značné množství času.

### Snížení doby kompilace

Pro zvýšení rychlosti kompilace dokumentu můžete nakonfigurovat `pgfplots` balíček tak, aby exportoval obrázky do samostatných PDF souborů a poté je do dokumentu importoval: zkompilujte jednou a pak obrázky znovu použijte. Chcete-li to udělat, přidejte do preambule následující kód:

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

Viz [tento článek nápovědy](/latex/cs/otazky-a-odpovedi/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) pro další podrobnosti o tom, jak nastavit tikz-externalization ve vašem projektu Overleaf.

## Základní příklad (také s externím generováním obrázků)

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

% Obrázky budeme generovat externě
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

První příklad je 2D a 3D matematické výrazy vykreslené vedle sebe.

%Zde začíná 2D graf
\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%Zde končí 2D graf
\hskip 5pt
%Zde začíná 3D graf
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
%Zde končí 3D graf

\end{document}
```

[Otevřete tento `pgfplots` příklad v 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)

Následující obrázek ukazuje výsledek vytvořený výše uvedeným kódem:

![Plgplotsex1OLV2.png](/files/d58561eac3087061d5bb560614e3864e09e14ce2)

### Vysvětlení kódu

Protože `pgfplots` je založen na `tikz` graf musí být uvnitř `tikzpicture` prostředí. Poté deklarace prostředí `\begin{axis}`, `\end{axis}` nastaví správné měřítko grafu — podívejte se na [Referenční příručka](#reference-guide) pro další prostředí os.

Pro přidání skutečného grafu se používá příkaz `\addplot[color=red]{log(x)};` Uvnitř hranatých závorek `[...]`mohou být předány některé volby; zde nastavujeme `color` grafu na `red`. Hranaté závorky jsou povinné; pokud nepředáváte žádné volby, ponechte mezi nimi prázdné místo. Do složených závorek vložíte funkci, kterou chcete vykreslit. Je důležité si pamatovat, že tento příkaz musí končit středníkem (;).

Pro umístění druhého grafu vedle prvního deklarujte nové `tikzpicture` prostředí. Nevkládejte nový řádek, ale malou prázdnou mezeru, v tomto případě `hskip 10pt` vloží prázdné místo o šířce 10 pt.

Zbytek syntaxe je stejný, až na `\addplot3 [surf,]{exp(-x^2-y^2)*x};`. Tím se přidá 3D graf a volba `surf` uvnitř hranatých závorek určuje, že jde o plošný graf. Funkce, kterou chcete vykreslit, musí být umístěna do složených závorek. Opět nezapomeňte na konci příkazu přidat středník (;).

**Poznámka**: Doporučuje se jako dobrá praxe odsazovat kód — podívejte se na druhý graf ve výše uvedeném příkladu — a na konci každé volby předané `\addplot`. Tím je kód čitelnější a v případě potřeby se snadněji přidávají další volby.

## 2D grafy

`pgfplots`' možnosti 2D vykreslování jsou rozsáhlé — a své grafy si můžete přizpůsobit podle svých požadavků. Přesto výchozí volby obvykle dávají velmi dobré výsledky, takže stačí zadat data a LaTeX udělá zbytek.

### Vykreslování matematických výrazů

Zde je příklad:

```latex
\begin{tikzpicture}
\begin{axis}[
    axis lines = left,
    xlabel = \(x\),
    ylabel = {\(f(x)\)},
]
%Níže je definována červená parabola
\addplot [
    domain=-10:10,
    samples=100,
    color=red,
]
{x^2 - 2*x - 1};
\addlegendentry{\(x^2 - 2x - 1\)}
%Zde je definována modrá parabola
\addplot [
    domain=-10:10,
    samples=100,
    color=blue,
    ]
    {x^2 + 2*x + 1};
\addlegendentry{\(x^2 + 2x + 1\)}

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

[Otevřete tento `pgfplots` příklad v 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)

Výstup z tohoto kódu je zobrazen na obrázku níže — preambule dokumentu LaTeXu je přidána automaticky, když otevřete odkaz:

![Plgplotsex2.png](/files/d0a62856414a917dce430c020b99b27c588ee7e5)

#### Vysvětlení kódu

Pojďme si nové příkazy rozebrat řádek po řádku:

**axis lines = left.**

Tím se nastaví osy pouze na levé a dolní straně grafu namísto výchozího rámečku. Další možnosti přizpůsobení najdete v referenční příručce.

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

Názvy parametrů mluví samy za sebe; tyto volby vám umožní přidat popisek k vodorovné a svislé ose. Všimněte si hodnoty ylabel uvnitř složených závorek; tyto závorky říkají pgfplots, jak text seskupit. xlabel mohlo mít také závorky. To je užitečné pro složité popisky, které mohou pgfplots zmást.

**\addplot.**

Tím se do osy přidá graf; obecné použití bylo popsáno v úvodu. V tomto příkladu jsou dva nové parametry.

**domain=-10:10.**

Tím se stanoví rozsah hodnot x.

**samples=100.**

Určuje počet bodů v intervalu definovaném pomocí domain. Čím vyšší je hodnota samples, tím ostřejší graf získáte, ale jeho vykreslení bude trvat déle.

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

Tím se přidá legenda k identifikaci funkce x^2 - 2x - 1.

Chcete-li do grafu přidat další křivku, stačí napsat novou `\addplot` položku.

### Vykreslování z dat

Vědecký výzkum často přináší data, která je třeba analyzovat. Následující příklad ukazuje, jak vykreslit data pomocí *pgfplots*:

```latex
Vykreslování z dat:

\begin{tikzpicture}
\begin{axis}[
    title={Temperature dependence of CuSO\(_4\cdot\)5H\(_2\)O solubility},
    xlabel={Temperature [\textcelsius]},
    ylabel={Solubility [g per 100 g water]},
    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}
```

[Otevřete tento `pgfplots` příklad v 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)

Výstup z tohoto kódu je zobrazen na obrázku níže — preambule dokumentu LaTeXu je přidána automaticky, když otevřete odkaz:

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

#### Vysvětlení kódu

Zde je několik nových příkazů a parametrů:

**title={Závislost rozpustnosti CuSO\\(\_4\cdot\\)5H\\(\_2\\)O na teplotě},**

Jak byste čekali, přiřazuje obrázku titul. Titul se zobrazí nad grafem.

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

Minimální a maximální meze os x a y.

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

Body, kde jsou umístěny značky. Je-li prázdné, značky se nastaví automaticky.

**legend pos=north west.**

Poloha rámečku legendy. Další možnosti najdete v referenční příručce.

**ymajorgrids=true.**

Tím se zapínají/vypínají mřížky v pozicích značek na ose y. Pro zapnutí mřížek na ose x použijte xmajorgrids.

**grid style=dashed.**

Samo vysvětlující. Zobrazí čárkované mřížkové čáry.

**mark=square.**

Tím se na každém bodě v poli souřadnic nakreslí čtvercová značka. Každá značka bude spojena s následující přímkou.

**coordinates {(2012,408184) (2011,408348)**

Souřadnice bodů, které mají být vykresleny. To jsou data, která chcete graficky analyzovat.

Pokud jsou data v souboru, což je většinou případ; místo příkazu `\addplot` a `coordinates` byste měli použít `\addplot table {file_with_the_data.dat}`, ostatní volby jsou v tomto prostředí platné.

### Bodové grafy

Bodové grafy se používají k reprezentaci informací pomocí různých značek a běžně se používají při výpočtu statistické regrese. V tomto příkladu vytvoříme bodový graf pomocí dat obsažených v souboru nazvaném `scattered_example.dat`, ve kterém data vypadají takto:

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

Náš bodový graf používá první dva sloupce dat:

```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/0cf721462dc1d7d55804be6b0872f6ff7f906452)

[Otevřete v Overleafu příklad projektu bodového grafu (obsahuje datový soubor `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=)

#### Vysvětlení kódu

Parametry předané do `prostředí` a `addplot` prostředí lze také použít v datovém grafu, s výjimkou `scatter`. Níže je popis kódu:

**enlarge limits=false**

Tím se osy zmenší tak, aby bod s maximálními a minimálními hodnotami ležel na okraji grafu.

**only marks**

Velmi výmluvné; na každý bod umístí značku.

**scatter**

Když se použije scatter, body jsou obarveny podle nějaké hodnoty, barva je dána parametrem meta vysvětleným níže.

**mark=halfcircle**\*

Typ značky použité pro každý bod; seznam možných hodnot najdete v referenční příručce.

**mark size=2.9pt**

Velikost každé značky; lze použít různé jednotky.

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

Zde příkaz table říká LaTeXu, že data k vykreslení jsou v souboru. Parametr meta=ma je předán, aby se vybral sloupec, který určuje barvu každého bodu. Uvnitř složených závorek je název datového souboru.

### Sloupcové grafy

Sloupcové grafy (také známé jako bar charts a bar plots) se používají k zobrazení shromážděných dat, hlavně statistických údajů o nějaké populaci. Sloupcové grafy v `pgfplots` jsou vysoce konfigurovatelné, ale zde ukážeme jednoduchý příklad:

```latex
\begin{tikzpicture}
\begin{axis}[
	x tick label style={
		/pgf/number format/1000 sep=},
	ylabel=Rok,
	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{Muži,Ženy}
\end{axis}
\end{tikzpicture}
```

[Otevřete tento `pgfplots` ukázka sloupcového kódu v Overleafu.](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)

Výstup z tohoto kódu je zobrazen na obrázku níže — preambule dokumentu LaTeXu je přidána automaticky, když otevřete odkaz:

![Barchartsexample.png](/files/5d8a46a826dd858da65cab22fc0078f06038c189)

#### Vysvětlení kódu

Obrázek začíná s ([dříve vysvětlenou](#introduction)) deklarací `tikzpicture` a `prostředí` prostředí, ale `prostředí` deklarace má několik nových parametrů:

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

Tento kousek kódu definuje úplný styl grafu. S tímto stylem můžete v tomto prostředí osy zahrnout několik příkazů \addplot; budou spolu hezky odpovídat a vypadají dobře bez dalších úprav (parametr ybar popsaný níže je pro fungování tohoto nutný).

**enlargelimits=0.05.**

Zvětšení mezer v sloupcovém grafu je nutné, protože tyto typy grafů často vyžadují trochu navíc prostoru nad sloupcem, aby vypadaly lépe a/nebo bylo možné přidat popisek. Číslo 0.05 je pak relativní k celkové výšce grafu.

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

Opět, to bude většinou fungovat bez problémů. Pokud cokoli, změňte hodnotu -0.2, abyste legendu umístili blíže/dále od osy x.

**ybar interval=0.7,**

Tloušťka každého sloupce. Hodnota 1 znamená, že sloupce budou vedle sebe bez mezer, a hodnota 0 znamená, že nebudou žádné sloupce, ale pouze svislé čáry.

Ta `coordinates` v tomto typu grafu určují základní bod sloupce a jeho výšku.

Popisky na ose y se zobrazí až na 4 číslice. Pokud jsou čísla, se kterými pracujete, větší než 9999 `pgfplots` použije se stejná notace jako v příkladu.

## 3D grafy

`pgfplots` má možnosti 3D vykreslování, jaké byste očekávali v programu pro kreslení grafů.

### Vykreslování matematických výrazů

Jednoduchý příklad k tomu najdete v [úvodu](#introduction), pojďme se podívat na něco o něco složitějšího:

```latex
\begin{tikzpicture}
\begin{axis}[
    title=Ukázka použití parametru mesh,
    skrýt osy,
    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}
```

[Otevřete tento `pgfplots` 3D příklad v Overleafu.](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)

Výstup z tohoto kódu je zobrazen na obrázku níže — preambule dokumentu LaTeXu je přidána automaticky, když otevřete odkaz:

![Pgfplots3dexample.png](/files/9bb67008e76a0764cb8e51066293c9852016b022)

#### Vysvětlení kódu

Většina příkazů zde už byla vysvětlena, ale jsou tu 3 nové věci:

**skrýt osy**

Tato volba v prostředí os je sama vysvětlující; osy nebudou zobrazeny.

**colormap/cool**

Je barevné schéma, které se má v grafu použít. Další barevná schémata najdete v referenční příručce.

**mesh**

Tato volba je také sama vysvětlující; podívejte se také na parametr surf v úvodním příkladu.

**Poznámka**: Při práci s trigonometrickými funkcemi `pgfplots` používá jako výchozí jednotky stupně; pokud je úhel v radiánech (jako v tomto příkladu), musíte použít `deg` funkci pro převod na stupně.

### Konturové grafy

V `pgfplots` je možné vykreslovat konturové grafy, ale data musí být předem vypočtena externím programem. Podívejme se na příklad:

```latex
\begin{tikzpicture}
\begin{axis}
[
    title={Konturový graf, pohled shora},
    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}
```

[Otevřete tento `pgfplots` příklad konturového grafu v Overleafu.](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)

Výstup z tohoto kódu je zobrazen na obrázku níže — preambule dokumentu LaTeXu je přidána automaticky, když otevřete odkaz:

![Contourplotexample.png](/files/8b5c88c3fdcdd2bd72b4c9dd57e5e2f02bd91800)

#### Vysvětlení kódu

Toto je graf některých vrstevnic pro stejnou rovnici, která byla použita v předchozí části. Hodnota `název` parametru je uvnitř složených závorek, protože obsahuje čárku, proto používáme seskupovací závorky, abychom se vyhnuli záměně s ostatními parametry předanými `\begin{axis}` deklaraci. Jsou tu dva nové příkazy:

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

Tím se změní pohled na graf. Parametr se předává prostředí os, což znamená, že jej lze použít v jakémkoli jiném typu 3D grafu. První hodnota je rotace kolem osy z v stupních; druhá hodnota rotuje pohled kolem osy x. V tomto příkladu, když zkombinujeme rotaci 0° kolem osy z a rotaci 90° kolem osy x, dostaneme pohled na graf shora.

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

Tento řádek kódu dělá dvě věci: Zaprvé říká LaTeXu, aby pro výpočet vrstevnic použil externí software gnuplot; v Overleafu to funguje dobře, ale pokud chcete tento příkaz použít ve své lokální instalaci LaTeXu, musíte nejprve nainstalovat gnuplot (fungovat bude i matlab; v takovém případě napište do příkazu matlab místo gnuplot). Zadruhé, podparametr levels je seznam hodnot výškových úrovní, pro které mají být vrstevnice vypočteny.

### Vykreslování povrchu z dat

K vykreslení sady dat do 3D povrchu potřebujeme pouze souřadnice každého bodu. Tyto souřadnice mohou být neuspořádaná množina nebo, v tomto případě, matice:

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

[Otevřete tento `pgfplots` 3D příklad povrchu v Overleafu.](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)

Výstup z tohoto kódu je zobrazen na obrázku níže — preambule dokumentu LaTeXu je přidána automaticky, když otevřete odkaz:

![3dsurfacedata.png](/files/aef4587a30d586787dac6c398ee32c44e61ad1b5)

#### Vysvětlení dat

Body předané `coordinates` parametru jsou považovány za obsažené v matici 3 × 3, přičemž prázdný řádek slouží jako oddělovač každého řádku matice.

Všechny volby pro 3D grafy v tomto článku platí i pro datové povrchy.

### Parametrický graf

Syntaxe parametrických grafů je trochu odlišná. Podívejme se na příklad:

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

[Otevřete tento `pgfplots` příklad parametrického grafu v Overleafu.](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)

Výstup z tohoto kódu je zobrazen na obrázku níže — preambule dokumentu LaTeXu je přidána automaticky, když otevřete odkaz:

![Parametricplot.png](/files/38bdfaed67950c8e76ce017bc2cc650b66fee9ea)

#### Vysvětlení kódu

V tomto příkladu jsou jen dvě nové věci: zaprvé, `samples y=0` aby se zabránilo `pgfplots` spojení krajních bodů spirály; a zadruhé způsob, jakým je funkce, kterou chceme vykreslit, předána do `addplot3` prostředí. Každá funkce parametru je seskupena do složených závorek a tři parametry jsou odděleny závorkou.

## Referenční příručka

| Příkaz/Volba/Prostředí | Popis                                                                                                                  | Možné hodnoty                                                                                                                                                                                                                                                                                                         |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **prostředí**          | Běžné grafy s lineárním měřítkem                                                                                       |                                                                                                                                                                                                                                                                                                                       |
| **semilogxaxis**       | logaritmické měřítko pro x a běžné měřítko pro y                                                                       |                                                                                                                                                                                                                                                                                                                       |
| **semilogyaxis**       | logaritmické měřítko pro y a běžné měřítko pro x                                                                       |                                                                                                                                                                                                                                                                                                                       |
| **loglogaxis**         | logaritmické měřítko pro osy x a y                                                                                     |                                                                                                                                                                                                                                                                                                                       |
| **axis lines**         | mění způsob kreslení os. výchozí je '*box*                                                                             | box, left, middle, center, right, none                                                                                                                                                                                                                                                                                |
| **legend pos**         | poloha rámečku legendy                                                                                                 | south west, south east, north west, north east, outer north east                                                                                                                                                                                                                                                      |
| **mark**               | typ značek používaných při vykreslování dat. Při použití jediného znaku je vzhled znaku velmi podobný skutečné značce. | \*, 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 funguje pouze ve 3D grafech). |
| **colormap**           | barevné schéma použité v grafu, lze je přizpůsobit, ale existují některá předdefinovaná barevná schémata               | hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet.                                                                                                                                                                                                                                            |

## Další čtení

Více informací viz:

* [Používání barev v LaTeXu](/latex/cs/formatovani/13-using-colors-in-latex.md)
* [Balíček TikZ](/latex/cs/obrazky-a-tabulky/05-tikz-package.md)
* [Externí generování pgfplots a tikzových obrázků](/latex/cs/otazky-a-odpovedi/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md)
* [Vkládání obrázků](/latex/cs/dalsi-temata/27-inserting-images.md)
* [Seznamy tabulek a obrázků](/latex/cs/obrazky-a-tabulky/03-lists-of-tables-and-figures.md)
* [Umísťování obrázků a tabulek](/latex/cs/obrazky-a-tabulky/02-positioning-images-and-tables.md)
* [Kreslení diagramů přímo v LaTeXu](/latex/cs/obrazky-a-tabulky/04-picture-environment.md)
* [Ta **pgfplots** dokumentace balíčku](http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplots.pdf).
* [Balíčky TikZ a PGF: Příručka pro verzi 3.0.0](http://mirror.utexas.edu/ctan/graphics/pgf/base/doc/pgfmanual.pdf)
* [Příklady TikZ a PGF na 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/cs/pro-konkretni-obor/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.
