![如何提高 TikZ 直方图中的数字精度](https://linux22.com/image/267535/%E5%A6%82%E4%BD%95%E6%8F%90%E9%AB%98%20TikZ%20%E7%9B%B4%E6%96%B9%E5%9B%BE%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%97%E7%B2%BE%E5%BA%A6.png)
我在下面的代码中输入了定点数:
\begin{tikzpicture}
\centering
\begin{axis}[xbar,bar width=0.2cm,legend style={at={(0.5,-0.15)}, xmin=0,xmax=0.8,anchor=north,legend columns=-1},ylabel={Top 6 Cases},symbolic y coords={Case$_{b3}$,Case$_{b6}$,Case$_{b4}$,Case$_{c5}$,Case$_{d1}$,Case$_{c3}$}, ytick=data, nodes near coords, nodes near coords align=horizontal, ]
\addplot coordinates {(0.6967,Case$_{b3}$) (0.69628,Case$_{b6}$) (0.69201,Case$_{b4}$) (0.66584,Case$_{c5}$) (0.65422,Case$_{d1}$) (0.65363,Case$_{c3}$)};
\end{axis}
\end{tikzpicture}
但是 pdf 文件中显示的数字只有小数点后 2 位,我希望它们显示为代码中具有正确精度的数字。
答案1
标签节点的内容由 的参数决定nodes near coords
。其默认值为\pgfmathprintnumber{\pgfplotspointmeta}
,因此它使用 PGF 数字解析器来格式化数字。默认情况下,这会将值四舍五入为两位数。
有多种方法可以改变这种情况。一种方法是将可选参数设置为
nodes near coords={\pgfmathprintnumber[fixed zerofill, precision=5]{\pgfplotspointmeta}},
或者你可以使用以下every node near coord
风格:
every node near coord/.append style={
/pgf/number format/fixed zerofill,
/pgf/number format/precision=5
}
两者都会导致相同的结果:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\centering
\begin{axis}[
xbar,
enlarge x limits=0.4,
bar width=0.2cm,
legend style={
at={(0.5,-0.15)},
anchor=north,
legend columns=-1
},
ylabel={Top 6 Cases},
symbolic y coords={
Case$_{b3}$,
Case$_{b6}$,
Case$_{b4}$,
Case$_{c5}$,
Case$_{d1}$,
Case$_{c3}$
},
ytick=data,
nodes near coords,
nodes near coords align=horizontal,
every node near coord/.append style={
/pgf/number format/fixed zerofill,
/pgf/number format/precision=5
}
]
\addplot coordinates {(0.6967,Case$_{b3}$) (0.69628,Case$_{b6}$) (0.69201,Case$_{b4}$) (0.66584,Case$_{c5}$) (0.65422,Case$_{d1}$) (0.65363,Case$_{c3}$)};
\end{axis}
\end{tikzpicture}
\end{document}