在 latex 中,是否可以在绘图之前直接对表格中的数字进行四舍五入?我尝试使用round-precision
fromsiunitx
包,但这似乎不起作用。MWE
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usepackage{siunitx}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel= x,
ylabel=y]
\addplot[only marks, color=black,mark=square*] table [y=y[round-precision=0], x=x]{test.txt};
\end{axis}
\end{tikzpicture}
\end{document}
数据表
x y
1 1.2
2 1.56
3 1.559
4 1.07
答案1
这是一个常见问题pgfplots
(或tikz
一般问题),即您无法在打印数字之前对其进行舍入。但在这里,我们需要完全可扩展地对数字进行舍入,这可以使用 来完成l3fp
。
\round[<precision>]{<expression>}
我声明了四舍五入expression
到precision
小数位的宏。precision
参数是可选的,默认为0
,即四舍五入到最接近的整数。
\begin{filecontents*}{test.txt}
x y
1 1.2
2 1.56
3 1.559
4 1.07
\end{filecontents*}
\documentclass{standalone}
\usepackage{pgfplots,xparse}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand \round { O{0} m }
{ \fp_eval:n { round(#2,#1) } }
\ExplSyntaxOff
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel=$x$,ylabel=$y$,only marks]
\addplot table [x=x,y=y]{test.txt};
\addplot table [x=x,y expr={\round[1]{\thisrow{y}}}]{test.txt};
\legend{bare,rounded}
\end{axis}
\end{tikzpicture}
\end{document}