棒グラフの棒の上にラベルを付けようとしています。
を見つけました \node [above] at (axis cs: 1, 810) {$Q1$};
が、これは 2 つのバーの中央に配置されます。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}