Pular para o conteúdo

Gráficos de barras com pgfplots

Acrescente ybar (barras verticais) ou xbar (barras horizontais) a um axis do pgfplots, dê nome às categorias com symbolic x coords e passe cada série como um \addplot com coordenadas.

Barras verticais com categorias nomeadas

ybar no axis transforma todas as séries em barras. symbolic x coords lista os nomes das categorias em ordem, e xtick=data coloca uma marcação embaixo de cada barra.

Uma série de barras

LaTeXPreâmbulo: \usepackage{pgfplots}Abrir no editor (abre em uma nova aba)
\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}

As barras começam no zero. Sem ymin=0, os eixos acrescentam um pouco de espaço abaixo do zero, então defina essa opção para que as barras fiquem apoiadas na moldura. enlarge x limits acrescenta espaço nas laterais, para que as barras das pontas não sejam cortadas pela moldura.

Barras agrupadas e rótulos de valor

Com várias séries, as barras de cada categoria ficam lado a lado. nodes near coords imprime cada valor acima da sua barra, e bar width define a largura (10pt por padrão).

Duas séries, com valores nas barras

LaTeXPreâmbulo: \usepackage{pgfplots}Abrir no editor (abre em uma nova aba)
\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}
Renderizado pelo Scissor LaTeX: Duas séries, com valores nas barras

ybar=4pt define o espaço entre as barras de um grupo (2pt por padrão).

Barras empilhadas

ybar stacked coloca as séries uma sobre a outra, em vez de lado a lado. O segundo \addplot começa onde o primeiro termina.

Barras empilhadas por trimestre

LaTeXPreâmbulo: \usepackage{pgfplots}Abrir no editor (abre em uma nova aba)
\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 horizontais

xbar desenha as barras da esquerda para a direita. Troque os papéis dos eixos: as categorias vão em symbolic y coords e ytick=data, e cada coordenada é escrita como (valor, categoria).

Barras horizontais

LaTeXPreâmbulo: \usepackage{pgfplots}Abrir no editor (abre em uma nova aba)
\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 também funciona.

Números como categorias

Anos e outros números não precisam de symbolic x coords: plote-os como números e use xtick=data. Por padrão, o pgfplots escreve 2024 como "2,024"; desligue o separador de milhar no estilo dos rótulos das marcações.

Anos no eixo x

LaTeXPreâmbulo: \usepackage{pgfplots}Abrir no editor (abre em uma nova aba)
\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}

Opções num relance

OpçãoO que fazNo Scissor LaTeX
ybar, xbarbarras verticais ou horizontais, lado a ladoFunciona
ybar=4pto espaço entre as barras de um grupoFunciona
ybar stacked, xbar stackedbarras umas sobre as outrasFunciona em eixos lineares
bar width=12pta largura de cada barraFunciona
bar shift=..desloca uma série para o ladoFunciona
nodes near coordso valor acima (ou ao lado) de cada barraFunciona
symbolic x coords, symbolic y coordscategorias com nomeFunciona, exceto nomes que parecem números (sem rótulos nas marcações)
xticklabel style={rotate=45, anchor=east}nomes de categoria inclinadosFunciona
ybar intervalbarras que preenchem o espaço entre os valores de xEm parte: desenhadas como barras comuns nos valores de x
hist (biblioteca statistics)conta valores em intervalosNão suportado: ignorado com uma mensagem, e os valores brutos são desenhados como linha

O que muda em relação a uma instalação do TeX

Todos os exemplos desta página também compilam com pgfplots numa instalação do TeX. Manual: ctan.org/pkg/pgfplots.

Veja também Noções básicas de pgfplots, Barras de erro, Dados de CSV e pgfplots.

Perguntas e respostas

Como faço um gráfico de barras em LaTeX?

Carregue o pgfplots e escreva \begin{axis}[ybar, symbolic x coords={A,B,C}, xtick=data] com um \addplot coordinates {(A,3) (B,5) (C,2)}; por série.

Como mostro os valores em cima das barras?

Acrescente nodes near coords às opções do axis. Cada barra recebe o seu valor como rótulo.

Como faço as barras começarem no zero?

Elas já começam no zero. Defina ymin=0 no axis (ou xmin=0 para xbar) para remover o espaço abaixo delas.

Cada exemplo desta página é composto pelo Scissor LaTeX quando o site é gerado. Última atualização: 2026-11-07.