Gráficos de barras con pgfplots
Añade ybar (barras verticales) o xbar (barras horizontales) a un axis de pgfplots, nombra las categorías con symbolic x coords y da cada serie como un \addplot con coordenadas.
Barras verticales con categorías con nombre
ybar en el eje convierte todas las series en barras. symbolic x coords enumera los nombres de las categorías en orden, y xtick=data pone una marca bajo cada barra.
Una serie de barras
\begin{tikzpicture}
\begin{axis}[
ybar, ymin=0,
symbolic x coords={Mon, Tue, Wed, Thu, Fri},
xtick=data,
ylabel={Visitors},
enlarge x limits=0.15,
]
\addplot coordinates {(Mon,44) (Tue,31) (Wed,38) (Thu,27) (Fri,40)};
\end{axis}
\end{tikzpicture}Las barras empiezan en cero. Sin ymin=0, el eje añade un poco de espacio bajo el cero, así que fíjalo para que las barras se apoyen en el marco. enlarge x limits añade espacio a los lados, para que el marco no corte las barras exteriores.
Barras agrupadas y etiquetas de valor
Con varias series, las barras de cada categoría quedan una al lado de otra. nodes near coords imprime cada valor encima de su barra, y bar width fija el ancho (10pt por defecto).
Dos series, con valores sobre las barras
\begin{tikzpicture}
\begin{axis}[
ybar, ymin=0, ymax=55, bar width=12pt,
symbolic x coords={Erika, Hans, John},
xtick=data, enlarge x limits=0.25,
nodes near coords,
ylabel={Points},
legend style={at={(0.5,-0.12)}, anchor=north, legend columns=2},
]
\addplot coordinates {(Erika,44) (Hans,31) (John,38)};
\addplot coordinates {(Erika,40) (Hans,36) (John,29)};
\legend{Round 1, Round 2}
\end{axis}
\end{tikzpicture}ybar=4pt fija la separación entre las barras de un grupo (2pt por defecto).
Barras apiladas
ybar stacked pone las series unas encima de otras en lugar de una al lado de otra. El segundo \addplot empieza donde termina el primero.
Barras apiladas por trimestre
\begin{tikzpicture}
\begin{axis}[
ybar stacked, ymin=0, bar width=16pt,
symbolic x coords={Q1, Q2, Q3, Q4},
xtick=data, enlarge x limits=0.2,
legend pos=north west, ylabel={Sales},
]
\addplot coordinates {(Q1,12) (Q2,18) (Q3,15) (Q4,22)};
\addplot coordinates {(Q1,6) (Q2,9) (Q3,12) (Q4,10)};
\legend{Online, In store}
\end{axis}
\end{tikzpicture}Barras horizontales
xbar dibuja las barras de izquierda a derecha. Intercambia el papel de los ejes: las categorías van en symbolic y coords y ytick=data, y cada coordenada se escribe como (valor, categoría).
Barras horizontales
\begin{tikzpicture}
\begin{axis}[
xbar, xmin=0, xmax=50,
symbolic y coords={Rust, Python, C},
ytick=data, enlarge y limits=0.3,
nodes near coords, xlabel={Projects},
width=8cm, height=5cm,
]
\addplot coordinates {(44,Rust) (31,Python) (12,C)};
\end{axis}
\end{tikzpicture}xbar stacked también funciona.
Números como categorías
Los años y otros números no necesitan symbolic x coords: dibújalos como números y usa xtick=data. pgfplots escribe 2024 como "2,024" por defecto; desactiva el separador de miles en el estilo de las etiquetas de las marcas.
Años en el eje x
\begin{tikzpicture}
\begin{axis}[
ybar, ymin=0, xtick=data, enlarge x limits=0.25,
x tick label style={/pgf/number format/1000 sep=},
]
\addplot coordinates {(2023,18) (2024,31) (2025,44)};
\end{axis}
\end{tikzpicture}Las opciones de un vistazo
| Opción | Qué hace | En Scissor LaTeX |
|---|---|---|
ybar, xbar | barras verticales u horizontales, una al lado de otra | Funciona |
ybar=4pt | la separación entre las barras de un grupo | Funciona |
ybar stacked, xbar stacked | barras unas encima de otras | Funciona en ejes lineales |
bar width=12pt | el ancho de cada barra | Funciona |
bar shift=.. | desplaza una serie hacia un lado | Funciona |
nodes near coords | el valor encima (o al lado) de cada barra | Funciona |
symbolic x coords, symbolic y coords | categorías con nombre | Funciona, salvo con nombres que parecen números (sin etiquetas de marca) |
xticklabel style={rotate=45, anchor=east} | nombres de categoría inclinados | Funciona |
ybar interval | barras que llenan el espacio entre valores x | En parte: se dibujan como barras normales en los valores x |
hist (biblioteca statistics) | agrupa los valores en intervalos | No se admite: se ignora con un mensaje, y los valores sin procesar se dibujan como una línea |
Diferencias con una instalación de TeX
Todos los ejemplos de esta página también compilan con pgfplots en una instalación de TeX. Manual: ctan.org/pkg/pgfplots.
Consulta también Fundamentos de pgfplots, Barras de error, Datos desde CSV y pgfplots.
Preguntas y respuestas
¿Cómo hago un gráfico de barras en LaTeX?
Carga pgfplots y escribe \begin{axis}[ybar, symbolic x coords={A,B,C}, xtick=data] con un \addplot coordinates {(A,3) (B,5) (C,2)}; por serie.
¿Cómo muestro los valores encima de las barras?
Añade nodes near coords a las opciones del eje. Cada barra recibe su valor como etiqueta.
¿Cómo hago que las barras empiecen en cero?
Ya empiezan en cero. Fija ymin=0 en el eje (o xmin=0 para xbar) para quitar el espacio que queda debajo.
Scissor LaTeX compone cada ejemplo de esta página al generar el sitio. Última actualización: 2026-11-07.