pgfplot 一致的数字格式

pgfplot 一致的数字格式

我正在尝试使我的数字格式pgfplots与文档的其余部分相同。我通常\num使用siunitx包来排版数字,并且也想在我的图中使用它。

\num不会产生与相同的格式\pgfmathprintnumber,并且我已经尝试过这个(感谢@Jake 和@Marco Daniel):

\documentclass{standalone}
\usepackage{siunitx}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}
    [
    xmin=1, xmax=5000,
    ymin=0, ymax=2,
    log base 10 number format code/.code={ \pgfmathparse{10^(#1)}\num[round-mode=places, round-precision=0]{\pgfmathresult} },           %num version
    % log base 10 number format code/.code={$\pgfmathparse{10^(#1)}\pgfmathprintnumber[set thousands separator=\,]{\pgfmathresult}$}  %pgfmathprintnumber version
    % yticklabel={\num[round-mode=places, round-precision=1]{\tick}} %does not work
    ]
    \node at (axis cs: 10, 1.8) {\num[round-mode=places, round-precision=0]{12345678}};
    \node at (axis cs: 10, 1.7) {\pgfmathprintnumber[int detect, set thousands separator=\,]{12345678}};    
    \node at (axis cs: 10, 1.4) {\num[round-mode=places, round-precision=0]{1000}};
    \node at (axis cs: 10, 1.3) {\pgfmathprintnumber[int detect, set thousands separator=\,]{1000}};    
  \end{semilogxaxis}
  \end{tikzpicture}
\end{document}

显示数字格式

当 ymax<3 时,yticklabel 的代码会出现编译错误:

! Number too big. \l_siunitx_tmpa_tl ->5000000000

有没有解决这个问题的方法,或者有某种方法可以设置使用的全局数字格式pgfplots


这是失败的最小代码:

\documentclass{standalone}
\usepackage{siunitx}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}
    [
    xmin=1, xmax=5000,
    ymin=0, ymax=2,
    yticklabel={\num[round-mode=places, round-precision=1]{\tick}} %does not work
    ]
  \end{semilogxaxis}
  \end{tikzpicture}
\end{document}

答案1

正如评论中所述,发生这种情况是因为刻度值有时用很多尾随零定义,这在尝试舍入值dimension too large时会导致错误。作为一种解决方法,您可以先通过使用解析它来清理值,然后让其执行其操作:siunitx\pgfmathparse\pgfmathparse{\tick*1}\num\pgfmathresult

\documentclass{standalone}
\usepackage{siunitx}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}
    [
    xmin=1, xmax=5000,
    ymin=0, ymax=2,
    yticklabel={\pgfmathparse{(\tick*1)}\num[round-mode=places, round-precision=1]{\pgfmathresult}}
    ]
  \end{semilogxaxis}
  \end{tikzpicture}
\end{document}

相关内容