pgfplots Balkendiagramm xticks nicht mit Balken ausgerichtet

pgfplots Balkendiagramm xticks nicht mit Balken ausgerichtet

Sieht so aus, als ob die Xticks die Balken nicht genau ausrichten, der erste AAA fehlt:

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

Ausgabe:

Bildbeschreibung hier eingeben

Antwort1

  • Zunächst fehlt in Ihrem Diagramm der Schlüssel xtick=data. Dann stimmen die Xtick-Beschriftungen und die Daten überein.

  • Sie möchten wahrscheinlich nicht, dass der erste Balken nur halb neben der Y-Achse gedruckt wird. Ersetzen Sie ihn xmin = 0,xmax=14durch xmin = -1,xmax=13.

  • Vielleicht möchten Sie nicht, dass die Y-Achse beim kleinsten Wert beginnt, also bei AAA. In diesem Fall fügen Sie hinzu ymin=0.

  • Um die Beschriftung der x-Achse nach unten zu verschieben, verwenden Sie xlabel style = {yshift=-5mm}.

Bildbeschreibung hier eingeben

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

verwandte Informationen