> 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/pl/specyficzne-dla-dziedziny/08-pgfplots-package.md).

# Pakiet pgfplots

## Wstęp

Ta `pgfplots` pakiet, który jest oparty na [`TikZ`](/latex/pl/rysunki-i-tabele/05-tikz-package.md), jest potężnym narzędziem do wizualizacji i idealnym rozwiązaniem do tworzenia grafik naukowych/technicznych. Podstawowa idea polega na tym, że podajesz dane wejściowe/wzór i `pgfplots` robi resztę.

### Preambuła dokumentu

Aby użyć `pgfplots` Aby dodać pakiet w swoim dokumencie, dodaj następującą linię do preambuły:

`\usepackage{pgfplots}`

Możesz również skonfigurować działanie `pgfplots` w preambule dokumentu. Na przykład, aby zmienić rozmiar każdego wykresu i zagwarantować zgodność wsteczną (zalecane), dodaj następującą linię:

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

To zmienia rozmiar każdego `pgfplot` rysunku na 10 centymetrów, co jest ogromną wartością; możesz użyć innych jednostek (pt, mm, in). *compat* parametr służy do tego, aby kod działał z wersją pakietu 1.9 lub nowszą.

### Czas kompilacji (krótkie tło)

Gdy oryginalny silnik TeX był projektowany/pisany, ponad 40 lat temu, nie był przeznaczony do *bezpośredniego* tworzenia grafiki — miały to być pliki tworzone przez zewnętrzne programy (np. MetaPost) i importowane do składu dokumentu. Pojawienie się pdfTeX-a — który jest ściśle oparty na oryginalnym oprogramowaniu TeX — przyniosło możliwość tworzenia grafiki *bezpośrednie* za pomocą nowych wbudowanych poleceń języka TeX w pdfTeX (zwanych *prymitywów*), które mogą generować operatory/dane PDF wymagane do tworzenia grafiki. Powstanie pdfTeX-a doprowadziło do rozwoju zaawansowanych pakietów graficznych LaTeX, takich jak `TikZ`, `pgfplots` itd., zdolnych do tworzenia grafiki kodowanej za pomocą wysokopoziomowych poleceń LaTeX.

Jednak w tle, głęboko wewnątrz silnika pdfTeX (i innych silników), te wysokopoziomowe polecenia graficzne LaTeX muszą zostać przetworzone poprzez „przekonwertowanie” ich z powrotem na niskopoziomowe (prymitywne) polecenia silnika pdfTeX, które faktycznie generują (wyprowadzają) operatory PDF wymagane do utworzenia wynikowego rysunku/rysunków. To przetwarzanie graficznych poleceń LaTeX — rozwijanie i wykonywanie prymitywów — może zająć niepomijalną ilość czasu. Nawet pojedyncze wysokopoziomowe polecenie graficzne LaTeX, wraz z odpowiadającymi mu danymi, może wymagać wielokrotnego wykonania *wieloma* niskopoziomowych (prymitywnych) poleceń silnika TeX. Z perspektywy użytkownika końcowego dokumenty zawierające wiele `pgfplots` rysunków i/lub bardzo złożoną grafikę mogą potrzebować znacznego czasu na renderowanie (kompilację).

### Skracanie czasu kompilacji

Aby zwiększyć szybkość kompilacji dokumentu, możesz skonfigurować `pgfplots` pakiet tak, aby eksportował rysunki do osobnych plików PDF, a następnie importował je do dokumentu: skompiluj raz, a potem ponownie używaj rysunków. Aby to zrobić, dodaj poniższy kod do preambuły:

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

Zobacz [ten artykuł pomocy](/latex/pl/pytania-i-odpowiedzi/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) aby uzyskać więcej szczegółów na temat konfiguracji tikz-externalization w projekcie Overleaf.

## Podstawowy przykład (także z zewnętrznym eksportem rysunków)

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

% Będziemy eksportować rysunki zewnętrznie
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

Pierwszy przykład to zestawienie 2D i 3D wyrażeń matematycznych obok siebie.

%Tutaj zaczyna się wykres 2D
\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%Tutaj kończy się wykres 2D
\hskip 5pt
%Tutaj zaczyna się wykres 3D
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
%Tutaj kończy się wykres 3D

\end{document}
```

[Otwórz ten `pgfplots` przykład w 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)

Poniższy obraz pokazuje wynik uzyskany przez powyższy kod:

![Plgplotsex1OLV2.png](/files/61348f21020034d7fdc7c8851543267846cc73e5)

### Wyjaśnienie kodu

Ponieważ `pgfplots` jest oparty na `tikz` wykres musi znajdować się wewnątrz `tikzpicture` środowiska. Następnie deklaracja środowiska `\begin{axis}`, `\end{axis}` ustawi poprawne skalowanie wykresu — sprawdź [Przewodnik referencyjny](#reference-guide) dla innych środowisk osi.

Aby dodać rzeczywisty wykres, używa się polecenia `\addplot[color=red]{log(x)};` Wewnątrz nawiasów kwadratowych `[...]`, można przekazać pewne opcje; tutaj ustawiamy `color` wykresu na `red`. Nawiasy kwadratowe są obowiązkowe; jeśli nie przekazujesz żadnych opcji, zostaw między nimi puste miejsce. Wewnątrz nawiasów klamrowych wpisujesz funkcję do wykreślenia. Ważne jest, aby pamiętać, że to polecenie musi kończyć się średnikiem (;).

Aby umieścić drugi wykres obok pierwszego, zadeklaruj nowe `tikzpicture` środowisko. Nie wstawiaj nowej linii, lecz niewielką pustą przerwę; w tym przypadku `hskip 10pt` wstawi pustą przestrzeń o szerokości 10pt.

Reszta składni jest taka sama, z wyjątkiem `\addplot3 [surf,]{exp(-x^2-y^2)*x};`. To doda wykres 3D, a opcja `surf` wewnątrz nawiasów kwadratowych oznacza, że jest to wykres powierzchniowy. Funkcja do wykreślenia musi zostać umieszczona wewnątrz nawiasów klamrowych. Ponownie, nie zapomnij o średniku (;) na końcu polecenia.

**Uwaga**: Zaleca się jako dobrą praktykę wcięcie kodu — zobacz drugi wykres w powyższym przykładzie — oraz dodanie przecinka (,) na końcu każdej opcji przekazywanej do `\addplot`. W ten sposób kod jest bardziej czytelny i łatwiej dodać dalsze opcje, jeśli zajdzie taka potrzeba.

## Wykresy 2D

`pgfplots`możliwości tworzenia wykresów 2D są ogromne — możesz dostosować swoje wykresy do własnych potrzeb. Mimo to domyślne opcje zwykle dają bardzo dobre wyniki, więc wszystko, co musisz zrobić, to podać dane, a LaTeX zrobi resztę.

### Wykreślanie wyrażeń matematycznych

Oto przykład:

```latex
\begin{tikzpicture}
\begin{axis}[
    axis lines = left,
    xlabel = \(x\),
    ylabel = {\(f(x)\)},
]
%Poniżej zdefiniowana jest czerwona parabola
\addplot [
    domain=-10:10,
    samples=100,
    color=red,
]
{x^2 - 2*x - 1};
\addlegendentry{\(x^2 - 2x - 1\)}
%Tutaj zdefiniowana jest niebieska parabola
\addplot [
    domain=-10:10,
    samples=100,
    color=blue,
    ]
    {x^2 + 2*x + 1};
\addlegendentry{\(x^2 + 2x + 1\)}

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

[Otwórz ten `pgfplots` przykład w 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)

Wynik tego kodu pokazano na poniższym obrazie — preambuła dokumentu LaTeX jest dodawana automatycznie, gdy otwierasz link:

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

#### Wyjaśnienie kodu

Przeanalizujmy nowe polecenia linia po linii:

**axis lines = left.**

To ustawi osie tylko po lewej i dolnej stronie wykresu, zamiast domyślnej ramki. Dalsze opcje dostosowania znajdziesz w przewodniku referencyjnym.

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

Nazwy parametrów są mówiące same za siebie; pozwalają umieścić etykietę na osi poziomej i pionowej. Zwróć uwagę na wartość ylabel ujętą w nawiasy klamrowe — nawiasy te mówią pgfplots, jak grupować tekst. xlabel również mogło mieć nawiasy. Jest to przydatne dla złożonych etykiet, które mogą wprowadzić pgfplots w błąd.

**\addplot.**

To doda wykres do osi; ogólne użycie zostało opisane we wstępie. W tym przykładzie są dwa nowe parametry.

**domain=-10:10.**

To określa zakres wartości x.

**samples=100.**

Określa liczbę punktów w przedziale zdefiniowanym przez domain. Im większa wartość samples, tym gładszy wykres uzyskasz, ale renderowanie potrwa dłużej.

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

To dodaje legendę identyfikującą funkcję x^2 - 2x - 1.

Aby dodać kolejny wykres do rysunku, po prostu wpisz nowy `\addplot` wpis.

### Wykreślanie z danych

Badania naukowe często dostarczają danych, które trzeba przeanalizować. Następny przykład pokazuje, jak wykreślać dane za pomocą *pgfplots*:

```latex
Wykreślanie z danych:

\begin{tikzpicture}
\begin{axis}[
    title={Zależność rozpuszczalności CuSO\(_4\cdot\)5H\(_2\)O od temperatury},
    xlabel={Temperatura [\textcelsius]},
    ylabel={Rozpuszczalność [g na 100 g wody]},
    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}
```

[Otwórz ten `pgfplots` przykład w 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)

Wynik tego kodu pokazano na poniższym obrazie — preambuła dokumentu LaTeX jest dodawana automatycznie, gdy otwierasz link:

![Plgplotsex3.png](/files/304a0d3609e32dd367aab693855e382ec7463d4d)

#### Wyjaśnienie kodu

Pojawiają się tutaj niektóre nowe polecenia i parametry:

**title={Zależność rozpuszczalności CuSO(\_4\cdot)5H(\_2)O od temperatury}.**

Jak można się spodziewać, przypisuje tytuł rysunkowi. Tytuł będzie wyświetlany nad wykresem.

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

Minimalne i maksymalne granice osi x i y.

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

Punkty, w których umieszczane są znaczniki. Jeśli pole jest puste, kreski osi są ustawiane automatycznie.

**legend pos=north west.**

Położenie pola legendy. Sprawdź przewodnik referencyjny, aby uzyskać więcej opcji.

**ymajorgrids=true.**

To włącza/wyłącza linie siatki w położeniach kresek na osi y. Użyj xmajorgrids, aby włączyć linie siatki na osi x.

**grid style=dashed.**

Samoopisujące. Aby wyświetlić przerywane linie siatki.

**mark=square.**

To rysuje kwadratowy znacznik w każdym punkcie tablicy współrzędnych. Każdy znacznik będzie połączony z następnym linią prostą.

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

Współrzędne punktów do wykreślenia. To są dane, które chcesz przeanalizować graficznie.

Jeśli dane znajdują się w pliku, co zdarza się najczęściej; zamiast polecenia `\addplot` i `coordinates` powinieneś użyć `\addplot table {file_with_the_data.dat}`, reszta opcji jest poprawna w tym środowisku.

### Wykresy punktowe

Wykresy punktowe służą do przedstawiania informacji za pomocą różnych znaczników i są powszechnie używane przy obliczaniu regresji statystycznej. W tym przykładzie utworzymy wykres punktowy, używając danych zawartych w pliku o nazwie `scattered_example.dat`, w którym dane wyglądają tak:

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

Nasz wykres punktowy używa pierwszych dwóch kolumn danych:

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

[Otwórz przykład projektu wykresu punktowego w Overleaf (zawiera plik danych `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=)

#### Wyjaśnienie kodu

Parametry przekazane do `axis` i `addplot` środowisk mogą być również używane w wykresie danych, z wyjątkiem `scatter`. Poniżej opis kodu:

**enlarge limits=false**

To zmniejszy osie tak, aby punkt o wartościach maksymalnych i minimalnych znalazł się na krawędzi wykresu.

**only marks**

Bardzo jednoznaczne, umieści znacznik w każdym punkcie.

**scatter**

Gdy używana jest opcja scatter, punkty są kolorowane zależnie od wartości, a kolor jest nadawany przez parametr meta wyjaśniony poniżej.

**mark=halfcircle**\*

Rodzaj znacznika używanego w każdym punkcie; sprawdź przewodnik referencyjny, aby zobaczyć listę możliwych wartości.

**mark size=2.9pt**

Rozmiar każdego znacznika; można używać różnych jednostek.

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

Tutaj polecenie table mówi LaTeX-owi, że dane do wykreślenia znajdują się w pliku. Parametr meta=ma jest przekazywany, aby wybrać kolumnę określającą kolor każdego punktu. Wewnątrz nawiasów klamrowych znajduje się nazwa pliku danych.

### Wykresy słupkowe

Wykresy słupkowe (znane również jako wykresy kolumnowe i słupki) służą do prezentowania zebranych danych, głównie danych statystycznych dotyczących jakiejś populacji. Wykresy słupkowe w `pgfplots` są bardzo konfigurowalne, ale tutaj pokażemy prosty przykład:

```latex
\begin{tikzpicture}
\begin{axis}[
	x tick label style={
		/pgf/number format/1000 sep=},
	ylabel=Year,
	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{Men,Women}
\end{axis}
\end{tikzpicture}
```

[Otwórz ten `pgfplots` przykład kodu słupkowego w 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)

Wynik tego kodu pokazano na poniższym obrazie — preambuła dokumentu LaTeX jest dodawana automatycznie, gdy otwierasz link:

![Barchartsexample.png](/files/726e199f5b4831b57cbeea277e5dc68f245dc668)

#### Wyjaśnienie kodu

Rysunek zaczyna się od ([wcześniej wyjaśnionej](#introduction)) deklaracji `tikzpicture` i `axis` środowisk, ale `axis` deklaracja ma szereg nowych parametrów:

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

Ten fragment kodu definiuje kompletny styl wykresu. Dzięki temu stylowi możesz umieścić kilka poleceń \addplot w tym środowisku axis; będą do siebie pasować i dobrze wyglądać razem bez dalszych poprawek (parametr ybar opisany poniżej jest obowiązkowy, aby to działało).

**enlargelimits=0.05.**

Powiększenie zakresów w wykresie słupkowym jest konieczne, ponieważ tego rodzaju wykresy często wymagają dodatkowej przestrzeni nad słupkiem, aby wyglądały lepiej i/lub umożliwić dodanie etykiety. Wartość 0.05 jest wtedy względna względem całkowitej wysokości wykresu.

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

Ponownie, w większości przypadków będzie to działać dobrze. Jeśli trzeba, zmień wartość -0.2, aby umieścić legendę bliżej/dalej od osi x.

**ybar interval=0.7,**

Grubość każdego słupka. 1 oznacza, że słupki będą obok siebie bez przerw, a 0 oznacza, że nie będzie słupków, tylko pionowe linie.

Ta `coordinates` w tego rodzaju wykresie określają punkt bazowy słupka i jego wysokość.

Etykiety na osi y będą miały do 4 cyfr. Jeśli liczby, z którymi pracujesz, są większe niż 9999 `pgfplots` użyje takiej samej notacji jak w przykładzie.

## Wykresy 3D

`pgfplots` ma możliwości tworzenia wykresów 3D, jakich można oczekiwać od programu do tworzenia wykresów.

### Wykreślanie wyrażeń matematycznych

Jest prosty przykład na [wprowadzeniu](#introduction), zajmijmy się czymś nieco bardziej złożonym:

```latex
\begin{tikzpicture}
\begin{axis}[
    title=Przykład użycia parametru mesh,
    ukryj osie,
    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}
```

[Otwórz ten `pgfplots` przykład 3D w 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)

Wynik tego kodu pokazano na poniższym obrazie — preambuła dokumentu LaTeX jest dodawana automatycznie, gdy otwierasz link:

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

#### Wyjaśnienie kodu

Większość poleceń tutaj została już wyjaśniona, ale są 3 nowe rzeczy:

**ukryj osie**

Ta opcja w środowisku axis jest sama w sobie opisowa — osie nie będą wyświetlane.

**colormap/cool**

To schemat kolorów używany na wykresie. Sprawdź przewodnik referencyjny, aby zobaczyć więcej schematów kolorów.

**mesh**

Ta opcja również jest samoopisowa; sprawdź też parametr surf w przykładzie wprowadzającym.

**Uwaga**: Podczas pracy z funkcjami trygonometrycznymi `pgfplots` używa stopni jako domyślnych jednostek; jeśli kąt jest w radianach (jak w tym przykładzie), musisz użyć `deg` funkcji, aby przeliczyć na stopnie.

### Wykresy konturowe

W `pgfplots` można tworzyć wykresy konturowe, ale dane muszą zostać wcześniej obliczone przez zewnętrzny program. Zobaczmy przykład:

```latex
\begin{tikzpicture}
\begin{axis}
[
    title={Wykres konturowy, widok z góry},
    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}
```

[Otwórz ten `pgfplots` przykład wykresu konturowego w 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)

Wynik tego kodu pokazano na poniższym obrazie — preambuła dokumentu LaTeX jest dodawana automatycznie, gdy otwierasz link:

![Contourplotexample.png](/files/5e7eca0bd16378e0d4442c1e8649f4c2cbfd5cde)

#### Wyjaśnienie kodu

To jest wykres niektórych linii konturowych dla tego samego równania, które użyto w poprzedniej sekcji. Wartość parametru `tytuł` jest wewnątrz nawiasów klamrowych, ponieważ zawiera przecinek, więc używamy nawiasów grupujących, aby uniknąć nieporozumień z innymi parametrami przekazanymi do `\begin{axis}` deklaracji. Są dwa nowe polecenia:

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

To zmienia widok wykresu. Parametr jest przekazywany do środowiska axis, co oznacza, że można go użyć w każdym innym rodzaju wykresu 3D. Pierwsza wartość to obrót wokół osi z, w stopniach; druga wartość służy do obrotu widoku wokół osi x. W tym przykładzie, gdy połączymy obrót o 0° wokół osi z i obrót o 90° wokół osi x, uzyskujemy widok wykresu z góry.

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

Ta linia kodu robi dwie rzeczy: po pierwsze, mówi LaTeX-owi, aby użył zewnętrznego programu gnuplot do obliczenia linii konturowych; działa to dobrze w Overleaf, ale jeśli chcesz użyć tego polecenia w lokalnej instalacji LaTeX, musisz najpierw zainstalować gnuplot (matlab też zadziała; w takim przypadku wpisz matlab zamiast gnuplot w poleceniu). Po drugie, parametr podrzędny levels to lista wartości poziomów wysokości, dla których mają zostać obliczone linie konturowe.

### Wykreślanie powierzchni z danych

Aby wykreślić zbiór danych jako powierzchnię 3D, potrzebujemy jedynie współrzędnych każdego punktu. Współrzędne te mogą być nieuporządkowanym zbiorem albo, w tym przypadku, macierzą:

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

[Otwórz ten `pgfplots` przykład powierzchni 3D w 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)

Wynik tego kodu pokazano na poniższym obrazie — preambuła dokumentu LaTeX jest dodawana automatycznie, gdy otwierasz link:

![3dsurfacedata.png](/files/612cb587586788c5fa8611601ccf2d776941fc7d)

#### Wyjaśnienie danych

Punkty przekazane do `coordinates` parametru są traktowane tak, jakby były zawarte w macierzy 3 × 3, przy czym pusta linia służy jako separator każdego wiersza macierzy.

Wszystkie opcje dla wykresów 3D w tym artykule mają zastosowanie do powierzchni danych.

### Wykres parametryczny

Składnia wykresów parametrycznych jest nieco inna. Zobaczmy przykład:

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

[Otwórz ten `pgfplots` przykład wykresu parametrycznego w 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)

Wynik tego kodu pokazano na poniższym obrazie — preambuła dokumentu LaTeX jest dodawana automatycznie, gdy otwierasz link:

![Parametricplot.png](/files/bccb66d2f9dd956fe5e47546202cd99b01da9f7a)

#### Wyjaśnienie kodu

W tym przykładzie są tylko dwie nowe rzeczy: po pierwsze, `samples y=0` aby zapobiec `pgfplots` łączeniu skrajnych punktów spirali; a po drugie, sposób przekazywania funkcji do wykreślenia do `addplot3` środowiska. Każda funkcja parametryczna jest ujęta w nawiasy klamrowe, a trzy parametry są oddzielone nawiasem.

## Przewodnik referencyjny

| Polecenie/Opcja/Środowisko | Opis                                                                                                                                             | Możliwe wartości                                                                                                                                                                                                                                                                                                         |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **axis**                   | Zwykłe wykresy ze skalą liniową                                                                                                                  |                                                                                                                                                                                                                                                                                                                          |
| **semilogxaxis**           | skala logarytmiczna dla x i zwykła skala dla y                                                                                                   |                                                                                                                                                                                                                                                                                                                          |
| **semilogyaxis**           | skala logarytmiczna dla y i zwykła skala dla x                                                                                                   |                                                                                                                                                                                                                                                                                                                          |
| **loglogaxis**             | skala logarytmiczna dla osi x i y                                                                                                                |                                                                                                                                                                                                                                                                                                                          |
| **axis lines**             | zmienia sposób rysowania osi. domyślne to '*boks*                                                                                                | box, left, middle, center, right, none                                                                                                                                                                                                                                                                                   |
| **legend pos**             | położenie pola legendy                                                                                                                           | south west, south east, north west, north east, outer north east                                                                                                                                                                                                                                                         |
| **mark**                   | rodzaj znaczników używanych przy wykresach danych. Gdy używany jest pojedynczy znak, jego wygląd jest bardzo podobny do rzeczywistego znacznika. | \*, 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 działają tylko na wykresach 3D). |
| **colormap**               | schemat kolorów używany na wykresie, można go dostosować, ale istnieją też zdefiniowane mapy kolorów                                             | hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet.                                                                                                                                                                                                                                               |

## Dalsza lektura

Więcej informacji znajdziesz w:

* [Używanie kolorów w LaTeX](/latex/pl/formatowanie/13-using-colors-in-latex.md)
* [Pakiet TikZ](/latex/pl/rysunki-i-tabele/05-tikz-package.md)
* [Zewnętrzne eksportowanie pgfplots i tikzpictures](/latex/pl/pytania-i-odpowiedzi/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md)
* [Wstawianie obrazów](/latex/pl/wiecej-tematow/27-inserting-images.md)
* [Spisy tabel i rysunków](/latex/pl/rysunki-i-tabele/03-lists-of-tables-and-figures.md)
* [Pozycjonowanie obrazów i tabel](/latex/pl/rysunki-i-tabele/02-positioning-images-and-tables.md)
* [Rysowanie diagramów bezpośrednio w LaTeX-u](/latex/pl/rysunki-i-tabele/04-picture-environment.md)
* [Ta **pgfplots** dokumentacja pakietu](http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplots.pdf).
* [Pakiety TikZ i PGF: podręcznik dla wersji 3.0.0](http://mirror.utexas.edu/ctan/graphics/pgf/base/doc/pgfmanual.pdf)
* [Przykłady TikZ i 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/pl/specyficzne-dla-dziedziny/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.
