使用 pgfplots 绘制显著数字

使用 pgfplots 绘制显著数字

pgfplots 是否有可能为节点打印没有小数的数字?我的意思是打印“2”而不是“2.0e0”。

就我而言,我想删除小数部分并添加百分号,这样得到的将是“2%”而不是“2.0e0”。

--

此外,我怎样才能将文本节点“ 1%”放在相应栏的顶部?(如果该栏为负,则它将不再位于顶部)

--

这是一个示例代码和一张我想要改进的图片。 enter image description here

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

相关内容