> 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/es/especifico-de-un-campo/08-pgfplots-package.md).

# paquete Pgfplots

## Introducción

El `pgfplots` paquete, que se basa en [`TikZ`](/latex/es/figuras-y-tablas/05-tikz-package.md), es una poderosa herramienta de visualización e ideal para crear gráficos científicos/técnicos. La idea básica es que proporcionas los datos/fórmula de entrada y `pgfplots` hace el resto.

### El preámbulo del documento

Para usar el `pgfplots` paquete en tu documento añade la siguiente línea a tu preámbulo:

`\usepackage{pgfplots}`

También puedes configurar el comportamiento de `pgfplots` en el preámbulo del documento. Por ejemplo, para cambiar el tamaño de cada gráfica y garantizar la compatibilidad con versiones anteriores (recomendado), añade la siguiente línea:

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

Esto cambia el tamaño de cada `pgfplot` figura a 10 centímetros, que es enorme; puedes usar distintas unidades (pt, mm, in). El *compat* parámetro es para que el código funcione en la versión 1.9 del paquete o posterior.

### Tiempo de compilación (breve contexto)

Cuando el motor TeX original fue concebido/escrito, hace más de 40 años, no fue diseñado para *la producción* directa de gráficos—estos debían ser archivos creados por programas externos (p. ej., MetaPost) e importados al documento compuesto. La aparición de pdfTeX—que se basa estrechamente en el software TeX original—aportó la capacidad de crear gráficos *directamente* usando los nuevos comandos de lenguaje TeX incorporados en pdfTeX (llamados *primitivas*) que pueden generar la salida de los operadores/datos PDF necesarios para producir gráficos. La creación de pdfTeX llevó al desarrollo de sofisticados paquetes gráficos de LaTeX, como `TikZ`, `pgfplots` etc., capaces de producir gráficos codificados usando comandos de alto nivel de LaTeX.

Sin embargo, entre bastidores, y en lo profundo del motor pdfTeX (y de otros motores), esos comandos gráficos de alto nivel de LaTeX necesitan ser procesados "convirtiéndolos" de nuevo en comandos de bajo nivel del motor pdfTeX (primitivos) que en realidad generan (producen) los operadores PDF requeridos para crear la(s) figura(s) resultante(s). Ese procesamiento de los comandos gráficos de LaTeX —expansión y ejecución de primitivas— puede llevar un tiempo nada despreciable. Incluso un único comando gráfico de alto nivel de LaTeX, junto con sus datos correspondientes, puede requerir la ejecución repetida de *muchas* comandos primitivos de bajo nivel del motor TeX. Desde la perspectiva del usuario final, los documentos que contienen múltiples `pgfplots` figuras y/o gráficos muy complejos pueden tardar un tiempo considerable en renderizarse (compilarse).

### Reducir el tiempo de compilación

Para aumentar la velocidad de compilación del documento puedes configurar el `pgfplots` paquete para exportar las figuras a archivos PDF separados y luego importarlos al documento: compilar una vez y reutilizar las figuras. Para hacerlo, añade el código que se muestra abajo al preámbulo:

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

Consulta [este artículo de ayuda](/latex/es/preguntas-y-respuestas/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) para obtener más detalles sobre cómo configurar la externalización de tikz en tu proyecto de Overleaf.

## Ejemplo básico (también externalizando las figuras)

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

% Externalizaremos las figuras
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

El primer ejemplo es una expresión matemática 2D y 3D graficada lado a lado.

%Aquí comienza la gráfica 2D
\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%Aquí termina la gráfica 2D
\hskip 5pt
%Aquí comienza la gráfica 3D
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
%Aquí termina la gráfica 3D

\end{document}
```

[Abre este `pgfplots` ejemplo en 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)

La siguiente imagen muestra el resultado producido por el código anterior:

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

### Explicación del código

Porque `pgfplots` se basa en `tikz` la gráfica debe estar dentro de un `tikzpicture` entorno. Luego, la declaración del entorno `\begin{axis}`, `\end{axis}` establecerá la escala correcta para la gráfica—consulta la [Guía de referencia](#reference-guide) para otros entornos de ejes.

Para añadir una gráfica real, el comando `\addplot[color=red]{log(x)};` se usa. Dentro de los corchetes, `[...]`, se pueden pasar algunas opciones; aquí, establecemos el `color` de la gráfica a `red`. Los corchetes son obligatorios; si no se pasan opciones, deja un espacio en blanco entre ellos. Dentro de las llaves pones la función a graficar. Es importante recordar que este comando debe terminar con un punto y coma (;).

Para colocar una segunda gráfica junto a la primera, declara un nuevo `tikzpicture` entorno. No insertes una nueva línea, sino un pequeño espacio en blanco; en este caso `hskip 10pt` insertará un espacio en blanco de 10 pt de ancho.

El resto de la sintaxis es igual, excepto por `\addplot3 [surf,]{exp(-x^2-y^2)*x};`. Esto añadirá una gráfica 3D, y la opción `surf` dentro de los corchetes indica que es una gráfica de superficie. La función a graficar debe colocarse dentro de las llaves. Otra vez, no olvides poner un punto y coma (;) al final del comando.

**Nota**: Se recomienda como buena práctica sangrar el código—consulta la segunda gráfica en el ejemplo anterior—y añadir una coma (,) al final de cada opción pasada a `\addplot`. Así el código es más legible y es más fácil añadir más opciones si hace falta.

## Gráficas 2D

`pgfplots`Las funcionalidades de graficación 2D de LaTeX son vastas y puedes personalizar tus gráficas para que se adapten a tus necesidades. Sin embargo, las opciones predeterminadas suelen dar muy buenos resultados, así que todo lo que necesitas hacer es introducir los datos y LaTeX hará el resto.

### Graficar expresiones matemáticas

Aquí hay un ejemplo:

```latex
\begin{tikzpicture}
\begin{axis}[
    axis lines = left,
    xlabel = \(x\),
    ylabel = {\(f(x)\)},
]
%Debajo se define la parábola roja
\addplot [
    domain=-10:10,
    samples=100,
    color=red,
]
{x^2 - 2*x - 1};
\addlegendentry{\(x^2 - 2x - 1\)}
%Aquí se define la parábola azul
\addplot [
    domain=-10:10,
    samples=100,
    color=blue,
    ]
    {x^2 + 2*x + 1};
\addlegendentry{\(x^2 + 2x + 1\)}

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

[Abre este `pgfplots` ejemplo en 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)

La salida de este código se muestra en la imagen de abajo: el preámbulo del documento LaTeX se añade automáticamente cuando abres el enlace:

![Plgplotsex2.png](/files/630bd6a922c0413fa29335a5f1857dfd07813b23)

#### Explicación del código

Analicemos los nuevos comandos línea por línea:

**axis lines = left.**

Esto establecerá los ejes solo en los lados izquierdo e inferior de la gráfica, en lugar del recuadro predeterminado. Más opciones de personalización en la guía de referencia.

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

Nombres de parámetros bastante descriptivos: estos te permitirán poner una etiqueta en los ejes horizontal y vertical. Observa el valor de ylabel entre llaves; estas llaves le indican a pgfplots cómo agrupar el texto. xlabel también podría haber llevado llaves. Esto es útil para etiquetas complicadas que podrían confundir a pgfplots.

**\addplot.**

Esto añadirá una gráfica al eje; su uso general se describió en la introducción. En este ejemplo hay dos parámetros nuevos.

**domain=-10:10.**

Esto establece el rango de valores de x.

**samples=100.**

Determina el número de puntos en el intervalo definido por domain. Cuanto mayor sea el valor de samples, más nítida será la gráfica que obtengas, pero tardará más en renderizarse.

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

Esto añade la leyenda para identificar la función x^2 - 2x - 1.

Para añadir otra gráfica al diagrama, simplemente escribe una nueva `\addplot` entrada.

### Graficar a partir de datos

La investigación científica a menudo produce datos que deben analizarse. El siguiente ejemplo muestra cómo graficar datos con *pgfplots*:

```latex
Graficar a partir de datos:

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

[Abre este `pgfplots` ejemplo en 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)

La salida de este código se muestra en la imagen de abajo: el preámbulo del documento LaTeX se añade automáticamente cuando abres el enlace:

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

#### Explicación del código

Aquí hay algunos comandos y parámetros nuevos:

**title={Temperature dependence of CuSO(\_4\cdot)5H(\_2)O solubility}.**

Como podrías esperar, asigna un título a la figura. El título se mostrará encima de la gráfica.

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

Límites mínimo y máximo de los ejes x e y.

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

Puntos donde se colocan las marcas. Si está vacío, las marcas se establecen automáticamente.

**legend pos=north west.**

Posición del recuadro de la leyenda. Consulta la guía de referencia para más opciones.

**ymajorgrids=true.**

Esto activa o desactiva las líneas de cuadrícula en las posiciones de las marcas del eje y. Usa xmajorgrids para activar las líneas de cuadrícula en el eje x.

**grid style=dashed.**

Suficientemente descriptivo. Para mostrar líneas de cuadrícula discontinuas.

**mark=square.**

Esto dibuja una marca cuadrada en cada punto del arreglo de coordenadas. Cada marca se conectará con la siguiente mediante una línea recta.

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

Coordenadas de los puntos que se van a graficar. Estos son los datos que quieres analizar gráficamente.

Si los datos están en un archivo, que es el caso la mayoría de las veces; en lugar de los comandos `\addplot` y `coordinates` deberías usar `\addplot table {file_with_the_data.dat}`, el resto de las opciones son válidas en este entorno.

### Diagramas de dispersión

Los diagramas de dispersión se usan para representar información mediante algún tipo de marcas y se emplean comúnmente al calcular regresión estadística. En este ejemplo crearemos un diagrama de dispersión usando datos contenidos en un archivo llamado `scattered_example.dat`, en el que los datos se ven así:

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

Nuestro diagrama de dispersión usa las dos primeras columnas de los datos:

```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/311e8190078e66dcbb9e40ed214d6e047104ee34)

[Abre un ejemplo de proyecto de diagrama de dispersión en Overleaf (contiene el archivo de datos `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=)

#### Explicación del código

Los parámetros pasados a los `axis` y `addplot` entornos también se pueden usar en una gráfica de datos, excepto `scatter`. Debajo, la descripción del código:

**ampliar límites=false**

Esto reducirá los ejes para que el punto con los valores máximo y mínimo quede en el borde de la gráfica.

**only marks**

Muy explícito, pondrá una marca en cada punto.

**scatter**

Cuando se usa scatter, los puntos se colorean según un valor; el color lo da el parámetro meta explicado abajo.

**mark=halfcircle**\*

El tipo de marca que se usará en cada punto; consulta la guía de referencia para ver una lista de valores posibles.

**mark size=2.9pt**

El tamaño de cada marca; se pueden usar distintas unidades.

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

Aquí el comando table le indica a LaTeX que los datos que se van a graficar están en un archivo. El parámetro meta=ma se pasa para elegir la columna que determina el color de cada punto. Dentro de las llaves está el nombre del archivo de datos.

### Gráficos de barras

Los gráficos de barras (también conocidos como diagramas de barras y barras) se usan para mostrar datos recopilados, principalmente datos estadísticos sobre una población de algún tipo. Los gráficos de barras en `pgfplots` son altamente configurables, pero aquí vamos a mostrar un ejemplo sencillo:

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

[Abre este `pgfplots` ejemplo de código de barras en 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)

La salida de este código se muestra en la imagen de abajo: el preámbulo del documento LaTeX se añade automáticamente cuando abres el enlace:

![Barchartsexample.png](/files/0c60dd93c3e27792fddb514539ed3d4535d8df6e)

#### Explicación del código

La figura comienza con la declaración ([explicada anteriormente](#introduction)) de los `tikzpicture` y `axis` entornos, pero la `axis` declaración tiene varios parámetros nuevos:

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

Este fragmento de código define un estilo completo para la gráfica. Con este estilo puedes incluir varios comandos \addplot dentro de este entorno axis; encajarán y se verán bien juntos sin más ajustes (el parámetro ybar descrito abajo es obligatorio para que esto funcione).

**enlargelimits=0.05.**

Ampliar los límites en un gráfico de barras es necesario porque este tipo de gráficos a menudo requiere algo de espacio extra sobre la barra para verse mejor y/o añadir una etiqueta. Entonces el número 0.05 es relativo a la altura total de la gráfica.

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

Nuevamente, esto funcionará bien la mayor parte del tiempo. Si hace falta, cambia el valor de -0.2 para situar la leyenda más cerca o más lejos del eje x.

**ybar interval=0.7,**

Grosor de cada barra. 1 significa que las barras quedarán una junto a la otra sin espacios y 0 significa que no habrá barras, solo líneas verticales.

El `coordinates` en este tipo de gráfico determinan el punto de base de la barra y su altura.

Las etiquetas del eje y mostrarán hasta 4 dígitos. Si los números con los que trabajas son mayores que 9999 `pgfplots` usará la misma notación que en el ejemplo.

## Gráficas 3D

`pgfplots` tiene las capacidades de graficación 3D que podrías esperar en un software de gráficos.

### Graficar expresiones matemáticas

Hay un ejemplo sencillo de esto en la [introducción](#introduction), trabajemos en algo un poco más complejo:

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

[Abre este `pgfplots` Ejemplo 3D en 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)

La salida de este código se muestra en la imagen de abajo: el preámbulo del documento LaTeX se añade automáticamente cuando abres el enlace:

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

#### Explicación del código

La mayoría de los comandos aquí ya han sido explicados, pero hay 3 cosas nuevas:

**ocultar ejes**

Esta opción en el entorno axis es autoexplicativa; el eje no se mostrará.

**colormap/cool**

Es el esquema de colores que se usará en la gráfica. Consulta la guía de referencia para más esquemas de color.

**mesh**

Esta opción también es autoexplicativa; consulta también el parámetro surf en el ejemplo introductorio.

**Nota**: Cuando se trabaja con funciones trigonométricas `pgfplots` usa grados como unidades predeterminadas; si el ángulo está en radianes (como en este ejemplo) tienes que usar la `deg` función para convertir a grados.

### Gráficas de contorno

En `pgfplots` es posible graficar curvas de nivel, pero los datos tienen que ser precalculados por un programa externo. Veamos un ejemplo:

```latex
\begin{tikzpicture}
\begin{axis}
[
    title={Contour plot, view from top},
    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}
```

[Abre este `pgfplots` Ejemplo de gráfica de contorno en 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)

La salida de este código se muestra en la imagen de abajo: el preámbulo del documento LaTeX se añade automáticamente cuando abres el enlace:

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

#### Explicación del código

Esta es una gráfica de algunas líneas de contorno para la misma ecuación usada en la sección anterior. El valor del `title` parámetro está dentro de llaves porque contiene una coma, así que usamos las llaves de agrupación para evitar cualquier confusión con los otros parámetros pasados a la `\begin{axis}` declaración. Hay dos comandos nuevos:

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

Esto cambia la vista de la gráfica. El parámetro se pasa al entorno axis, lo que significa que esto puede usarse en cualquier otro tipo de gráfica 3D. El primer valor es una rotación, en grados, alrededor del eje z; el segundo valor es para rotar la vista alrededor del eje x. En este ejemplo, al combinar una rotación de 0° alrededor del eje z y una rotación de 90° alrededor del eje x, terminamos con una vista de la gráfica desde arriba.

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

Esta línea de código hace dos cosas: primero, le indica a LaTeX que use el software externo gnuplot para calcular las líneas de contorno; esto funciona bien en Overleaf, pero si quieres usar este comando en tu instalación local de LaTeX, primero debes instalar gnuplot (matlab también funcionará; en ese caso escribe matlab en lugar de gnuplot en el comando). Segundo, el subparámetro levels es una lista de valores de niveles de elevación en los que se calcularán las líneas de contorno.

### Graficar una superficie a partir de datos

Para graficar un conjunto de datos en una superficie 3D, solo necesitamos las coordenadas de cada punto. Estas coordenadas podrían ser un conjunto desordenado o, en este caso, una 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}
```

[Abre este `pgfplots` Ejemplo de superficie 3D en 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)

La salida de este código se muestra en la imagen de abajo: el preámbulo del documento LaTeX se añade automáticamente cuando abres el enlace:

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

#### Explicación de los datos

Los puntos pasados al `coordinates` parámetro se tratan como contenidos en una matriz de 3 × 3, usando una línea en blanco como separador para cada fila de la matriz.

Todas las opciones para gráficas 3D de este artículo se aplican a superficies de datos.

### Gráfica paramétrica

La sintaxis para gráficas paramétricas es ligeramente diferente. Veamos un ejemplo:

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

[Abre este `pgfplots` Ejemplo de gráfica paramétrica en 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)

La salida de este código se muestra en la imagen de abajo: el preámbulo del documento LaTeX se añade automáticamente cuando abres el enlace:

![Parametricplot.png](/files/0c2971c470450d4e5d39da240919f7dcd6804c1f)

#### Explicación del código

Solo hay dos cosas nuevas en este ejemplo: primero, el `samples y=0` para evitar `pgfplots` que se unan los puntos extremos de la espiral y; segundo, la forma en que la función a graficar se pasa al `addplot3` entorno. Cada función de parámetro se agrupa dentro de llaves y los tres parámetros se delimitan con un paréntesis.

## Guía de referencia

| Comando/Opción/Entorno | Descripción                                                                                                                                  | Valores posibles                                                                                                                                                                                                                                                                                                                       |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **axis**               | Gráficas normales con escala lineal                                                                                                          |                                                                                                                                                                                                                                                                                                                                        |
| **semilogxaxis**       | escala logarítmica de x y escala normal para y                                                                                               |                                                                                                                                                                                                                                                                                                                                        |
| **semilogyaxis**       | escala logarítmica para y y escala normal para x                                                                                             |                                                                                                                                                                                                                                                                                                                                        |
| **loglogaxis**         | escala logarítmica para los ejes x e y                                                                                                       |                                                                                                                                                                                                                                                                                                                                        |
| **axis lines**         | cambia la forma en que se dibujan los ejes. El valor predeterminado es '*caja*                                                               | box, left, middle, center, right, none                                                                                                                                                                                                                                                                                                 |
| **legend pos**         | posición del recuadro de la leyenda                                                                                                          | south west, south east, north west, north east, outer north east                                                                                                                                                                                                                                                                       |
| **mark**               | tipo de marcas usadas en la graficación de datos. Cuando se usa un solo carácter, la apariencia del carácter es muy similar a la marca real. | \*, x , +, \|, o, asterisk, star, estrella de 10 puntas, oplus, oplus\*, otimes, otimes\*, square, square\*, triangle, triangle\*, diamond, halfdiamond\*, halfsquare\*, right\*, left\*, estrella Mercedes, estrella Mercedes invertida, halfcircle, halfcircle\*, pentagon, pentagon\*, cubes. (cubes solo funciona en gráficas 3D). |
| **colormap**           | esquema de colores que se usará en una gráfica; puede personalizarse, pero hay algunos mapas de color predefinidos                           | hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet.                                                                                                                                                                                                                                                             |

## Lectura adicional

Para más información, consulte:

* [Uso de colores en LaTeX](/latex/es/formato/13-using-colors-in-latex.md)
* [Paquete TikZ](/latex/es/figuras-y-tablas/05-tikz-package.md)
* [Externalización de pgfplots y tikzpictures](/latex/es/preguntas-y-respuestas/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md)
* [Inserción de imágenes](/latex/es/mas-temas/27-inserting-images.md)
* [Listas de tablas y figuras](/latex/es/figuras-y-tablas/03-lists-of-tables-and-figures.md)
* [Posicionamiento de imágenes y tablas](/latex/es/figuras-y-tablas/02-positioning-images-and-tables.md)
* [Dibujar diagramas directamente en LaTeX](/latex/es/figuras-y-tablas/04-picture-environment.md)
* [El **pgfplots** documentación del paquete](http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplots.pdf).
* [Los paquetes TikZ y PGF: manual para la versión 3.0.0](http://mirror.utexas.edu/ctan/graphics/pgf/base/doc/pgfmanual.pdf)
* [Ejemplos de TikZ y PGF en 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/es/especifico-de-un-campo/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.
