Beschriftung zu Balken im Balkendiagramm hinzufügen

Beschriftung zu Balken im Balkendiagramm hinzufügen

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 coordsTaste macht genau das, also fügen Sie sie den axisOptionen 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.

Bildbeschreibung hier eingeben

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

verwandte Informationen