pgfplots 是否有可能为节点打印没有小数的数字?我的意思是打印“2”而不是“2.0e0”。
就我而言,我想删除小数部分并添加百分号,这样得到的将是“2%”而不是“2.0e0”。
--
此外,我怎样才能将文本节点“ 1%”放在相应栏的顶部?(如果该栏为负,则它将不再位于顶部)
--
这是一个示例代码和一张我想要改进的图片。
\documentclass{standalone}
\usepackage{filecontents,pgfplots,pgfplotstable}
\begin{filecontents}{data.dat}
id a b name
0 1.1 20 Name1
1 2.2 -10 Name2
2 3.3 15 Name3
\end{filecontents}
\begin{document}
\pgfplotstableread{data.dat}{\donnees}
\begin{tikzpicture}
\begin{axis}[ybar,xtick={0,1,2},xticklabels={a,b,c},point meta=explicit symbolic,nodes near coords=$\pgfplotspointmeta\%$]
\addplot table [x={id}, y={b},,meta expr=\thisrow{id}] {\donnees};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
您可以nodes near coords={\pgfmathprintnumber[fixed, precision=0]{\pgfplotspointmeta}\%}
使用 PGF 非常灵活的数字格式化宏来格式化数字。请注意,如果您的元数据是数字,则必须使用point meta=explicit
而不是point meta=explicit symbolic
,否则数字解析器将失败。
\documentclass[border=5mm]{standalone}
\usepackage{filecontents,pgfplots,pgfplotstable}
\begin{filecontents}{data.dat}
id a b name
0 1.1 20 Name1
1 2.2 10 Name2
2 3.3 15 Name3
\end{filecontents}
\begin{document}
\pgfplotstableread{data.dat}{\donnees}
\begin{tikzpicture}
\begin{axis}[
ybar,
xtick={0,1,2},
xticklabels={a,b,c},
point meta=explicit,
nodes near coords={\pgfmathprintnumber[fixed, precision=0]{\pgfplotspointmeta}\%}
]
\addplot table [x={id}, y={b},meta expr=\thisrow{id}] {\donnees};
\end{axis}
\end{tikzpicture}
\end{document}