Добавить метку к столбцам в гистограмме

Добавить метку к столбцам в гистограмме

Я пытаюсь разместить подписи на столбцах моей столбчатой ​​диаграммы.

Я нашел \node [above] at (axis cs: 1, 810) {$Q1$};, но этот центрируется посередине между двумя столбцами. Я хочу, чтобы значение по оси Y плавало над верхней частью столбца (или, может быть, внутри него)

Мой MWE выглядит так, без надписей он не очень выразителен. Есть предложения?

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

решение1

Ключ nodes near coordsделает именно это, поэтому добавьте это к опциям, axisи вы почти закончили. Вам также нужно будет немного растянуть ось, так как сейчас недостаточно места для меток, поэтому добавьте enlarge y limits={value=0.2,upper}также. Я бы также установил ymin=0. Наконец, переместите легенду с помощью legend pos=north west, чтобы она не закрывала полосы.

Если вы хотите, чтобы метки располагались внутри полос, добавьте nodes near coords align=below, в этом случае вам не нужно 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}

Связанный контент