Os xticks do gráfico de barras pgfplots não se alinham com as barras

Os xticks do gráfico de barras pgfplots não se alinham com as barras

Parece que os xticks não alinham as barras exatamente, falta o primeiro AAA:

\documentclass[]{standalone}
\usepackage{pgfplotstable}
\usepackage{tikz}
\tikzset{font=\footnotesize}
\pgfplotstableread[col sep=comma]{
key,value
AAA,14.9
BBB,16.5
CCC,19.1
DDD,20.2
EEE,22.7
FFF,23.1
GGG,26.3
HHH,26.4
III,27.1
JJJ,30.8
KKK,35.5
LLL,37.3
MMM,110.0
}\mydata
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    ybar,
    xmin = 0,xmax=14,
    %ytick=data,
    xticklabels from table={\mydata}{key},
    xlabel = {category},
    ylabel = {weight},
    x tick label style={rotate=90,anchor=east},
    axis lines=left,
    bar width=30,
    height=14cm
]
\addplot table [x expr=\coordindex,y=value] {\mydata};
\end{axis}
\end{tikzpicture}
\end{document}

Saída:

insira a descrição da imagem aqui

Responder1

  • Acima de tudo, seu enredo perde a chave xtick=data. Em seguida, os rótulos xtick e os dados correspondem.

  • Você provavelmente não deseja que a primeira barra seja impressa apenas pela metade próxima ao eixo y. Substituir xmin = 0,xmax=14por xmin = -1,xmax=13.

  • Talvez você não queira que o eixo y comece no menor valor, o de AAA. Neste caso adicione ymin=0.

  • Para deslocar o rótulo do eixo x para baixo, use xlabel style = {yshift=-5mm}.

insira a descrição da imagem aqui

\documentclass[]{standalone}
\usepackage{pgfplotstable}
\usepackage{tikz}
\tikzset{font=\footnotesize}
\pgfplotstableread[col sep=comma]{
key,value
AAA,14.9
BBB,16.5
CCC,19.1
DDD,20.2
EEE,22.7
FFF,23.1
GGG,26.3
HHH,26.4
III,27.1
JJJ,30.8
KKK,35.5
LLL,37.3
MMM,110.0
}\mydata
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    ybar,
    xmin = -1,xmax=13,
    ymin = 0,
    %ytick=data,
    xticklabels from table={\mydata}{key},
    xtick=data,
    xlabel = {category},
    xlabel style = {yshift=-5mm},
    ylabel = {weight},
    x tick label style={rotate=90,anchor=east},
    axis lines=left,
    bar width=30,
    height=14cm
]
\addplot table [x expr=\coordindex,y=value] {\mydata};
\end{axis}
\end{tikzpicture}
\end{document}

informação relacionada