禁用缩放的 x 刻度会导致 pgfplots 中出现“尺寸太大”

禁用缩放的 x 刻度会导致 pgfplots 中出现“尺寸太大”

我想将 x 轴刻度标签更改为0K 20K 40K 60K 80K类似于此图表中的 y 轴刻度标签:

在此处输入图片描述

我的 LaTeX MVP 生成图像:

\begin{filecontents*}{data.csv}
iter;prod
0;-10589.143027099373
2080;-10137.34268961796
5948;-9823.312236854963
8461;-9531.740064852165
11565;-9374.010299137673
14779;-9174.160659364205
18133;-8812.173184097246
21281;-8524.717622361832
24346;-8334.931265113803
28693;-8260.530715627245
33657;-8144.811407051079
37692;-8026.3359694899145
41347;-7927.802055824076
45664;-7854.28445759018
50737;-7837.35420135146
54924;-7697.667649897329
59341;-7681.064772064068
64499;-7460.053337376205
71204;-7385.997574969703
76470;-7330.933540294809
78661;-7315.709786834038
81232;-7232.586421626356
\end{filecontents*}

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{csvsimple}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}
\begin{tikzpicture}
\begin{axis} [
        ymax=0,
        xticklabel = {
            \pgfmathparse{\tick/1000}
            \pgfmathprintnumber{\pgfmathresult}\,K
        },
%        scaled x ticks=false,
        yticklabel = {
            \pgfmathparse{\tick/1000}
            \pgfmathprintnumber{\pgfmathresult}\,K
        },
        scaled y ticks=false,
    ]
    \addplot +[blue,mark=none] table [x=iter, y=prod, col sep=semicolon] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}

现在,当我取消注释该行时scaled x ticks=false,,我收到此错误:

! Dimension too large.
<to be read again> 
                   \relax 
l.50     \end{axis}

? 
! Emergency stop.
<to be read again> 
                   \relax 
l.50     \end{axis}

!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on build/mvp.log.

此错误消息似乎与除以零有关。由于我设置的分母为,1000我不明白这可能是什么原因。因此,我不知道为什么此方法适用于 y 轴,但不适用于 x 轴。有人能指出我做错了什么吗?

更新:轴scaled ticks=base 10:-3,

根据BambOo的建议: 在此处输入图片描述

答案1

的文档\pgfmathparse给出了答案:

pgf 中的数学引擎通常使用 TEX 的内部算法。这意味着:它非常适合 [−16384, 16384] 范围内的数字,并且精度为 5 位

数字范围通常对于绘图应用程序来说太小。pgfplots 通过\pgfkeys{/pgf/fpu}\pgfmathparse{1+41}激活“浮点单元”(fpu)并以浮点形式应用所有后续操作来扩大数字范围。

添加\pgfkeys{/pgf/fpu}到我的块中xticklabelyticklabel允许进行按照我想要的方式渲染轴所需的计算。

相关内容