막대 차트의 막대에 레이블 추가

막대 차트의 막대에 레이블 추가

막대형 차트의 막대 위에 레이블을 가져오려고 합니다.

을 찾았 \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}

관련 정보