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

# Pacote pgfplots

## Introdução

O `pgfplots` pacote, que é baseado em [`TikZ`](/latex/overleaf-learn-latex-pt/figuras-e-tabelas/05-tikz-package.md), é uma poderosa ferramenta de visualização e ideal para criar gráficos científicos/técnicos. A ideia básica é que você fornece os dados/fórmula de entrada e `pgfplots` faz o resto.

### O preâmbulo do documento

Para usar o `pgfplots` pacote no seu documento, adicione a seguinte linha ao preâmbulo:

`\usepackage{pgfplots}`

Você também pode configurar o comportamento de `pgfplots` no preâmbulo do documento. Por exemplo, para alterar o tamanho de cada gráfico e garantir compatibilidade retroativa (recomendado), adicione a próxima linha:

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

Isso altera o tamanho de cada `pgfplot` figura para 10 centímetros, o que é enorme; você pode usar diferentes unidades (pt, mm, in). O *compat* parâmetro faz com que o código funcione na versão 1.9 ou posterior do pacote.

### Tempo de compilação (breve contexto)

Quando o motor TeX original foi concebido/escrito, há mais de 40 anos, ele não foi projetado para *produção* direta de gráficos — estes deveriam ser arquivos criados por programas externos (por exemplo, MetaPost) e importados para o documento composto. O advento do pdfTeX — que é fortemente baseado no software TeX original — trouxe a capacidade de criar gráficos *diretamente* usando os novos comandos incorporados da linguagem TeX do pdfTeX (chamados *primitivos*) que podem gerar os operadores/dados PDF necessários para produzir gráficos. A criação do pdfTeX levou ao desenvolvimento de pacotes gráficos sofisticados em LaTeX, como `TikZ`, `pgfplots` etc., capazes de produzir gráficos codificados usando comandos LaTeX de alto nível.

No entanto, nos bastidores, e no interior do motor pdfTeX (e de outros motores), esses comandos gráficos de alto nível do LaTeX precisam ser processados por meio da "conversão" de volta em comandos de baixo nível (primitivos) do motor pdfTeX, que realmente geram (saem) os operadores PDF necessários para produzir a(s) figura(s) resultante(s). Esse processamento dos comandos gráficos de LaTeX — expansão e execução de primitivas — pode levar uma quantidade de tempo não desprezível. Até mesmo um único comando gráfico de alto nível do LaTeX, juntamente com seus dados correspondentes, pode exigir a execução repetida de *muitas* comandos primitivos de baixo nível do motor TeX. Do ponto de vista do usuário final, documentos contendo várias `pgfplots` figuras e/ou gráficos muito complexos podem levar um tempo considerável para serem renderizados (compilados).

### Reduzindo o tempo de compilação

Para aumentar a velocidade da compilação do documento, você pode configurar o `pgfplots` pacote para exportar as figuras para arquivos PDF separados e depois importá-las para o documento: compile uma vez e depois reutilize as figuras. Para fazer isso, adicione o código mostrado abaixo ao preâmbulo:

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

Consulte [este artigo de ajuda](/latex/overleaf-learn-latex-pt/perguntas-e-respostas/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) para mais detalhes sobre como configurar a externalização do tikz no seu projeto Overleaf.

## Exemplo básico (também externalizando as figuras)

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

% Iremos externalizar as figuras
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

O primeiro exemplo é de expressões matemáticas 2D e 3D plotadas lado a lado.

%Aqui começa o gráfico 2D
\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%Aqui termina o gráfico 2D
\hskip 5pt
%Aqui começa o gráfico 3D
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
%Aqui termina o gráfico 3D

\end{document}
```

[Abra este `pgfplots` exemplo no 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)

A imagem a seguir mostra o resultado produzido pelo código acima:

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

### Explicação do código

Porque `pgfplots` é baseado em `tikz` o gráfico deve estar dentro de um `tikzpicture` ambiente. Então a declaração do ambiente `\begin{axis}`, `\end{axis}` definirá a escala correta para o gráfico — veja o [Guia de referência](#reference-guide) para outros ambientes de eixo.

Para adicionar um gráfico real, o comando `\addplot[color=red]{log(x)};` é usado. Dentro dos colchetes, `[...]`, algumas opções podem ser passadas; aqui, definimos a `color` do gráfico para `vermelho`. Os colchetes são obrigatórios; se nenhuma opção for passada, deixe um espaço em branco entre eles. Dentro das chaves você coloca a função a ser plotada. É importante lembrar que esse comando deve terminar com ponto e vírgula (;).

Para colocar um segundo gráfico ao lado do primeiro, declare um novo `tikzpicture` ambiente. Não insira uma nova linha, mas sim um pequeno espaço em branco; neste caso `hskip 10pt` inserirá um espaço em branco de 10 pt de largura.

O restante da sintaxe é o mesmo, exceto pelo `\addplot3 [surf,]{exp(-x^2-y^2)*x};`. Isso adicionará um gráfico 3D, e a opção `surf` dentro dos colchetes declara que é um gráfico de superfície. A função a ser plotada deve ser colocada entre chaves. Novamente, não se esqueça de colocar um ponto e vírgula (;) no final do comando.

**Nota**: É recomendado, como boa prática, indentar o código — veja o segundo gráfico no exemplo acima — e adicionar uma vírgula (,) no final de cada opção passada para `\addplot`. Dessa forma, o código fica mais legível e é mais fácil adicionar outras opções se necessário.

## Gráficos 2D

`pgfplots`As funcionalidades de plotagem 2D são vastas — e você pode personalizar seus gráficos para atender às suas necessidades. No entanto, as opções padrão geralmente dão resultados muito bons, então tudo o que você precisa fazer é fornecer os dados e o LaTeX fará o resto.

### Plotagem de expressões matemáticas

Aqui está um exemplo:

```latex
\begin{tikzpicture}
\begin{axis}[
    axis lines = left,
    xlabel = \(x\),
    ylabel = {\(f(x)\)},
]
%Abaixo a parábola vermelha é definida
\addplot [
    domain=-10:10,
    samples=100,
    color=red,
]
{x^2 - 2*x - 1};
\addlegendentry{\(x^2 - 2x - 1\)}
%Aqui a parábola azul é definida
\addplot [
    domain=-10:10,
    samples=100,
    color=blue,
    ]
    {x^2 + 2*x + 1};
\addlegendentry{\(x^2 + 2x + 1\)}

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

[Abra este `pgfplots` exemplo no 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)

A saída deste código é mostrada na imagem abaixo — o preâmbulo do documento LaTeX é adicionado automaticamente quando você abre o link:

![Plgplotsex2.png](/files/609416682b14980c68bc54932da5e7b31ea56943)

#### Explicação do código

Vamos analisar os novos comandos linha por linha:

**axis lines = left.**

Isso definirá os eixos apenas nos lados esquerdo e inferior do gráfico, em vez da caixa padrão. Mais opções de personalização estão no guia de referência.

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

Nomes de parâmetros autoexplicativos, isso permitirá que você coloque um rótulo nos eixos horizontal e vertical. Observe o valor de ylabel entre chaves; essas chaves dizem ao pgfplots como agrupar o texto. O xlabel também poderia ter chaves. Isso é útil para rótulos complicados que podem confundir o pgfplots.

**\addplot.**

Isso adicionará um gráfico ao eixo; o uso geral foi descrito na introdução. Há dois novos parâmetros neste exemplo.

**domain=-10:10.**

Isso estabelece a faixa de valores de x.

**samples=100.**

Determina o número de pontos no intervalo definido por domain. Quanto maior o valor de samples, mais nítido será o gráfico obtido, mas levará mais tempo para renderizar.

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

Isso adiciona a legenda para identificar a função x^2 - 2x - 1.

Para adicionar outro gráfico ao plot, basta escrever uma nova `\addplot` entrada.

### Plotagem a partir de dados

A pesquisa científica frequentemente gera dados que precisam ser analisados. O próximo exemplo mostra como plotar dados com *pgfplots*:

```latex
Plotagem a partir de dados:

\begin{tikzpicture}
\begin{axis}[
    title={Dependência da solubilidade de CuSO\(_4\cdot\)5H\(_2\)O em relação à temperatura},
    xlabel={Temperatura [\textcelsius]},
    ylabel={Solubilidade [g por 100 g de água]},
    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}
```

[Abra este `pgfplots` exemplo no 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)

A saída deste código é mostrada na imagem abaixo — o preâmbulo do documento LaTeX é adicionado automaticamente quando você abre o link:

![Plgplotsex3.png](/files/8ff5d7c20e6f0573a0b1de85fdd218f6de67e1ef)

#### Explicação do código

Há alguns novos comandos e parâmetros aqui:

**title={Dependência da solubilidade de CuSO(\_4\cdot)5H(\_2)O em relação à temperatura}.**

Como você pode esperar, isso atribui um título à figura. O título será exibido acima do gráfico.

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

Limites mínimo e máximo dos eixos x e y.

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

Pontos onde as marcas são colocadas. Se estiver vazio, os ticks são definidos automaticamente.

**legend pos=north west.**

Posição da caixa da legenda. Consulte o guia de referência para mais opções.

**ymajorgrids=true.**

Isso ativa/desativa as linhas de grade nas posições dos ticks no eixo y. Use xmajorgrids para ativar as linhas de grade no eixo x.

**grid style=dashed.**

Autoexplicativo. Para exibir linhas de grade tracejadas.

**mark=square.**

Isso desenha uma marca quadrada em cada ponto do array de coordenadas. Cada marca será conectada à próxima por uma linha reta.

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

Coordenadas dos pontos a serem plotados. Estes são os dados que você deseja analisar graficamente.

Se os dados estiverem em um arquivo, o que acontece na maioria das vezes; em vez dos comandos `\addplot` e `coordinates` você deve usar `\addplot table {file_with_the_data.dat}`, o restante das opções é válido neste ambiente.

### Gráficos de dispersão

Gráficos de dispersão são usados para representar informações usando algum tipo de marca e são comumente usados quando se calcula regressão estatística. Neste exemplo, criaremos um gráfico de dispersão usando dados contidos em um arquivo chamado `scattered_example.dat`, no qual os dados se parecem com isto:

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

Nosso gráfico de dispersão usa as duas primeiras colunas dos dados:

```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/283acbf60663a4fde8d74d20d92d499619d53842)

[Abra um exemplo de projeto de gráfico de dispersão no Overleaf (contém o arquivo de dados `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=)

#### Explicação do código

Os parâmetros passados aos ambientes `axis` e `addplot` também podem ser usados em um gráfico de dados, exceto `scatter`. Abaixo, a descrição do código:

**enlarge limits=false**

Isso encolherá os eixos para que o ponto com valores máximo e mínimo fique na borda do gráfico.

**only marks**

Bem explícito, colocará uma marca em cada ponto.

**scatter**

Quando scatter é usado, os pontos são coloridos dependendo de um valor; a cor é dada pelo parâmetro meta explicado abaixo.

**mark=halfcircle**\*

O tipo de marca a ser usado em cada ponto; consulte o guia de referência para uma lista de valores possíveis.

**mark size=2.9pt**

O tamanho de cada marca; diferentes unidades podem ser usadas.

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

Aqui o comando table diz ao LaTeX que os dados a serem plotados estão em um arquivo. O parâmetro meta=ma é passado para escolher a coluna que determina a cor de cada ponto. Dentro das chaves está o nome do arquivo de dados.

### Gráficos de barras

Gráficos de barras (também conhecidos como bar charts e bar plots) são usados para exibir dados coletados, principalmente dados estatísticos sobre algum tipo de população. Gráficos de barras em `pgfplots` são altamente configuráveis, mas aqui vamos mostrar um exemplo simples:

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

[Abra este `pgfplots` exemplo de código de barras no 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)

A saída deste código é mostrada na imagem abaixo — o preâmbulo do documento LaTeX é adicionado automaticamente quando você abre o link:

![Barchartsexample.png](/files/695655c9c52bd5fd02ea40fe575b2519b96c813c)

#### Explicação do código

A figura começa com a ([anteriormente explicada](#introduction)) declaração dos `tikzpicture` e `axis` ambientes, mas a `axis` declaração tem vários novos parâmetros:

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

Esse trecho de código define um estilo completo para o gráfico. Com esse estilo, você pode incluir vários comandos \addplot dentro deste ambiente axis; eles se ajustarão e ficarão bem juntos sem outros ajustes (o parâmetro ybar descrito abaixo é obrigatório para isso funcionar).

**enlargelimits=0.05.**

Aumentar os limites em um gráfico de barras é necessário porque esse tipo de gráfico muitas vezes requer um espaço extra acima da barra para ficar melhor e/ou adicionar um rótulo. O número 0.05 é relativo à altura total do gráfico.

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

Novamente, isso funcionará bem na maioria das vezes. Se necessário, altere o valor de -0.2 para posicionar a legenda mais perto/mais longe do eixo x.

**ybar interval=0.7,**

Espessura de cada barra. 1 significa que as barras ficarão uma ao lado da outra, sem espaços, e 0 significa que não haverá barras, apenas linhas verticais.

O `coordinates` neste tipo de gráfico determina o ponto de base da barra e sua altura.

Os rótulos no eixo y aparecerão com até 4 dígitos. Se os números com os quais você está trabalhando forem maiores que 9999 `pgfplots` usará a mesma notação do exemplo.

## Gráficos 3D

`pgfplots` tem os recursos de plotagem 3D que você esperaria em um software de gráficos.

### Plotagem de expressões matemáticas

Há um exemplo simples sobre isso no [introdução](#introduction), vamos trabalhar em algo um pouco mais complexo:

```latex
\begin{tikzpicture}
\begin{axis}[
    title=Exemplo usando o parâmetro mesh,
    ocultar eixos,
    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}
```

[Abra este `pgfplots` exemplo 3D no 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)

A saída deste código é mostrada na imagem abaixo — o preâmbulo do documento LaTeX é adicionado automaticamente quando você abre o link:

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

#### Explicação do código

A maioria dos comandos aqui já foi explicada, mas há 3 coisas novas:

**ocultar eixos**

Essa opção no ambiente axis é autoexplicativa; os eixos não serão mostrados.

**colormap/cool**

É o esquema de cores a ser usado no gráfico. Consulte o guia de referência para mais esquemas de cores.

**mesh**

Essa opção também é autoexplicativa; confira também o parâmetro surf no exemplo introdutório.

**Nota**: Ao trabalhar com funções trigonométricas `pgfplots` usa graus como unidade padrão; se o ângulo estiver em radianos (como neste exemplo), você precisa usar a `deg` função para converter para graus.

### Gráficos de contorno

Em `pgfplots` é possível plotar gráficos de contorno, mas os dados precisam ser pré-calculados por um programa externo. Vamos ver um exemplo:

```latex
\begin{tikzpicture}
\begin{axis}
[
    title={Gráfico de contorno, vista superior},
    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}
```

[Abra este `pgfplots` exemplo de gráfico de contorno no 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)

A saída deste código é mostrada na imagem abaixo — o preâmbulo do documento LaTeX é adicionado automaticamente quando você abre o link:

![Contourplotexample.png](/files/99b47e46fffa50d0cf70950040a9425211976f93)

#### Explicação do código

Este é um gráfico de algumas linhas de contorno para a mesma equação usada na seção anterior. O valor do `título` parâmetro está entre chaves porque contém uma vírgula; assim, usamos as chaves de agrupamento para evitar qualquer confusão com os outros parâmetros passados para a `\begin{axis}` declaração. Há dois novos comandos:

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

Isso altera a visão do gráfico. O parâmetro é passado ao ambiente axis, o que significa que isso pode ser usado em qualquer outro tipo de gráfico 3D. O primeiro valor é uma rotação, em graus, em torno do eixo z; o segundo valor serve para girar a visão em torno do eixo x. Neste exemplo, ao combinar uma rotação de 0° em torno do eixo z e uma rotação de 90° em torno do eixo x, obtemos uma vista do gráfico de cima.

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

Essa linha de código faz duas coisas: primeiro, diz ao LaTeX para usar o software externo gnuplot para calcular as linhas de contorno; isso funciona bem no Overleaf, mas, se você quiser usar esse comando na sua instalação local do LaTeX, primeiro será necessário instalar o gnuplot (matlab também funcionará; nesse caso, escreva matlab em vez de gnuplot no comando). Segundo, o subparâmetro levels é uma lista de valores de níveis de elevação nos quais as linhas de contorno devem ser calculadas.

### Plotagem de uma superfície a partir de dados

Para plotar um conjunto de dados em uma superfície 3D, tudo o que precisamos são as coordenadas de cada ponto. Essas coordenadas podem ser um conjunto não ordenado ou, neste caso, uma matriz:

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

[Abra este `pgfplots` exemplo de superfície 3D no 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)

A saída deste código é mostrada na imagem abaixo — o preâmbulo do documento LaTeX é adicionado automaticamente quando você abre o link:

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

#### Explicação dos dados

Os pontos passados ao `coordinates` parâmetro são tratados como estando contidos em uma matriz 3 × 3, usando uma linha em branco como separador para cada linha da matriz.

Todas as opções para gráficos 3D neste artigo se aplicam a superfícies de dados.

### Gráfico paramétrico

A sintaxe para gráficos paramétricos é um pouco diferente. Vamos ver um exemplo:

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

[Abra este `pgfplots` exemplo de gráfico paramétrico no 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)

A saída deste código é mostrada na imagem abaixo — o preâmbulo do documento LaTeX é adicionado automaticamente quando você abre o link:

![Parametricplot.png](/files/8fe8e4a8a84e9e04d135e9596ee1aaddbd6ce0fa)

#### Explicação do código

Há apenas duas coisas novas neste exemplo: primeiro, o `samples y=0` para evitar `pgfplots` que os pontos extremos da espiral sejam ligados e; segundo, a forma como a função a ser plotada é passada ao `addplot3` ambiente. Cada função de parâmetro é agrupada entre chaves e os três parâmetros são delimitados por parênteses.

## Guia de referência

| Comando/Opção/Ambiente | Descrição                                                                                                                               | Valores possíveis                                                                                                                                                                                                                                                                                               |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **axis**               | Gráficos normais com escala linear                                                                                                      |                                                                                                                                                                                                                                                                                                                 |
| **semilogxaxis**       | escala logarítmica de x e escala normal para y                                                                                          |                                                                                                                                                                                                                                                                                                                 |
| **semilogyaxis**       | escala logarítmica para y e escala normal para x                                                                                        |                                                                                                                                                                                                                                                                                                                 |
| **loglogaxis**         | escala logarítmica para os eixos x e y                                                                                                  |                                                                                                                                                                                                                                                                                                                 |
| **axis lines**         | altera a forma como os eixos são desenhados. o padrão é '*caixa*                                                                        | box, left, middle, center, right, none                                                                                                                                                                                                                                                                          |
| **legend pos**         | posição da caixa da legenda                                                                                                             | south west, south east, north west, north east, outer north east                                                                                                                                                                                                                                                |
| **mark**               | tipo de marcas usadas na plotagem de dados. Quando se usa um único caractere, a aparência do caractere é muito semelhante à marca real. | \*, x , +, \|, o, asterisk, star, 10-pointed star, oplus, oplus\*, otimes, otimes\*, square, square\*, triangle, triangle\*, diamond, halfdiamond\*, halfsquare\*, right\*, left\*, Mercedes star, Mercedes star flipped, halfcircle, halfcircle\*, pentagon, pentagon\*, cubes. (cubes only work on 3d plots). |
| **colormap**           | esquema de cores a ser usado em um gráfico, pode ser personalizado, mas há alguns colormaps predefinidos                                | hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet.                                                                                                                                                                                                                                      |

## Leitura adicional

Para mais informações, consulta:

* [Utilizar cores no LaTeX](/latex/overleaf-learn-latex-pt/formatacao/13-using-colors-in-latex.md)
* [Pacote TikZ](/latex/overleaf-learn-latex-pt/figuras-e-tabelas/05-tikz-package.md)
* [Externalizando pgfplots e tikzpictures](/latex/overleaf-learn-latex-pt/perguntas-e-respostas/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md)
* [Inserção de imagens](/latex/overleaf-learn-latex-pt/mais-topicos/27-inserting-images.md)
* [Listas de tabelas e figuras](/latex/overleaf-learn-latex-pt/figuras-e-tabelas/03-lists-of-tables-and-figures.md)
* [Posicionamento de imagens e tabelas](/latex/overleaf-learn-latex-pt/figuras-e-tabelas/02-positioning-images-and-tables.md)
* [Desenhando diagramas diretamente em LaTeX](/latex/overleaf-learn-latex-pt/figuras-e-tabelas/04-picture-environment.md)
* [O **pgfplots** documentação do pacote](http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplots.pdf).
* [Os pacotes TikZ e PGF: manual para a versão 3.0.0](http://mirror.utexas.edu/ctan/graphics/pgf/base/doc/pgfmanual.pdf)
* [Exemplos de TikZ e PGF em TeXample.net](http://www.texample.net/tikz/examples/all/)


---

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

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

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

```
GET https://ayakaleaf-pro.ayaka.space/latex/overleaf-learn-latex-pt/especifico-da-area/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.
