我正在制作一个条形图,其数据值介于 0 到 1 之间,表示百分比,如下所示:
\documentclass[border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ybar,
bar width=1,
ymin=0,
enlarge x limits={abs=1},
xtick=data,
nodes near coords,
nodes near coords style={/pgf/number format/precision=3},
xticklabels={A,B,C,D},
yticklabel={\pgfmathparse{\tick*100}\pgfmathprintnumber{\pgfmathresult}\%},
tickwidth=0,
]
\addplot table[x expr=\coordindex,y index=0,row sep=\\] {0.104\\0.254\\0.309\\0.271\\};
\end{axis}
\end{tikzpicture}
\end{document}
我需要将值以百分比形式显示在 y 轴和列标签上。我找到了更改 y 轴值的选项,但我不知道如何对标签执行相同的操作。如果我理解它的工作原理,我应该在选项中yticklabel={\pgfmathparse{\tick*100}\pgfmathprintnumber{\pgfmathresult}\%}
添加一行,但我不知道应该添加什么。\pgfmathparse{\〈something〉*100}\pgfmathprintnumber{\pgfmathresult}\%}
nodes near coords
\〈something〉
我的假设正确吗?如果正确,那是什么\〈something〉
?如果不正确,我该如何将标签的值更改为等效的百分比值?请注意,我需要保留所有小数,因此 0.104 必须变成 10.4%(而不是 10%)。
答案1
的默认值为nodes near coords
。\pgfmathprintnumber\pgfplotspointmeta
因此,您可以将其更改为
nodes near coords={\pgfmathprintnumber\pgfplotspointmeta\%}
并将默认元数据乘以 100 以获得百分比。
\documentclass[border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ybar,
bar width=1,
ymin=0,
enlarge x limits={abs=1},
xtick=data,
point meta=y*100,
nodes near coords={\pgfmathprintnumber\pgfplotspointmeta\%},
nodes near coords style={/pgf/number format/precision=3,
/pgf/number format/fixed},
xticklabels={A,B,C,D},
yticklabel={\pgfmathparse{\tick*100}\pgfmathprintnumber{\pgfmathresult}\%},
tickwidth=0,
]
\addplot table[x expr=\coordindex,y index=0,row sep=\\] {0.104\\0.254\\0.309\\0.271\\};
\end{axis}
\end{tikzpicture}
\end{document}