Ich versuche, Beschriftungen über die Balken in meinem Balkendiagramm zu bekommen.
Ich habe gefunden \node [above] at (axis cs: 1, 810) {$Q1$};
, aber dieser zentriert sich in der Mitte zwischen zwei Balken. Ich möchte, dass der Wert der Y-Achse über dem oberen Rand des Balkens schwebt (oder vielleicht darin).
mein MWE sieht so aus, ohne Beschriftungen ist es nicht sehr ausdrucksstark. Irgendwelche Vorschläge?
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
ybar,
width = 12cm,
height = 5cm,
bar width=20pt,
ylabel={number of participants},
symbolic x coords={High School, Bachelor degree, Master degree, Ph.D or similar},
xtick = data,
]
\addplot[fill=blue] coordinates {(High School, 1) (Bachelor degree, 2) (Master degree, 3) (Ph.D or similar, 4)};
\addplot[fill=red] coordinates {(High School, 3) (Bachelor degree, 2) (Master degree, 8) (Ph.D or similar, 4)};
\legend{Native speaker, Non-native speaker}
\end{axis}
\end{tikzpicture}
\caption{Participants: Level of education}
\label{participantsLanguageOverviewNonNative}
\end{figure}
\end{document}
Antwort1
Die nodes near coords
Taste macht genau das, also fügen Sie sie den axis
Optionen hinzu und Sie sind fast fertig. Sie werden die Achse auch ein wenig strecken wollen, da im Moment nicht genug Platz für die Beschriftungen ist, also fügen Sie enlarge y limits={value=0.2,upper}
auch hinzu. Ich würde auch einstellen ymin=0
. Verschieben Sie zum Schluss die Legende mit legend pos=north west
, damit sie die Balken nicht verdeckt.
Wenn Sie die Beschriftungen innerhalb der Balken haben möchten, fügen Sie hinzu nodes near coords align=below
. In diesem Fall benötigen Sie das nicht enlarge y limits
.
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
ybar,
ymin=0,
width=12cm,
height=5cm,
bar width=20pt,
ylabel={number of participants},
nodes near coords,
% nodes near coords align=below, % places labels inside bars
symbolic x coords={High School, Bachelor degree, Master degree, Ph.D or similar},
xtick = data,
enlarge y limits={value=0.2,upper},
legend pos=north west
]
\addplot[fill=blue] coordinates {(High School, 1) (Bachelor degree, 2) (Master degree, 3) (Ph.D or similar, 4)};
\addplot[fill=red] coordinates {(High School, 3) (Bachelor degree, 2) (Master degree, 8) (Ph.D or similar, 4)};
\legend{Native speaker, Non-native speaker}
\end{axis}
\end{tikzpicture}
\caption{Participants: Level of education}
\label{participantsLanguageOverviewNonNative}
\end{figure}
\end{document}