PGFplots 轴刻度数字格式

PGFplots 轴刻度数字格式

我想知道如何排除0这种轴格式

yticklabel style={/pgf/number format/.cd,sci,sci zerofill,precision=1}

为了避免这种情况。

在此处输入图片描述

我得到的最相似的是使用此代码(作为 MWE)

\documentclass[8pt,a4paper,dvipsnames]{article}
\usepackage[utf8]{inputenc}
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm]{geometry}

\usepackage{xcolor}



\usepackage{pgfplots}
\pgfplotsset{compat=1.14}

\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[grid=major, scaled ticks=false,scale=2.2, y post scale=2, yticklabel style={/pgf/number format/.cd, 1000 sep={\;}}]
\addplot+[
        only marks,
        mark=+,
        color=NavyBlue,
        error bars/.cd,
        x dir=both, x explicit,
        y dir=both, y explicit,
        ]
        table[y error=yerror,x error=xerror]
            {NmP3pgf1.dat};
\addplot[
        red,
        domain=-3:1
        ] {-120322.13*x + 53246.18};  
\end{axis}
\end{tikzpicture}
\caption{pgfplots}
\end{figure}
\end{document}

由此产生了

在此处输入图片描述

即这个 NmP3pgf1.dat

x           y                xerror       yerror  label
0.00        52080.65         0.01         648.31   a
-0.80       148381.84        0.01       2618.50   a
-2.80       391752.88        0.01       9554.95   a

答案1

本质上,Jake 的解决方案一如既往地正确,但这里的数字对于\ifdim测试来说太大了。因此需要更多低级 pgf 数字格式。

如果您仅使用以下内容,它将执行零测试并执行 if 的正确分支。

yticklabel={\pgfkeys{/pgf/fpu}%
    \pgfmathparse{\tick}%
    \pgfmathfloatifflags{\pgfmathresult}{0}{0}{%
        \pgfmathprintnumber[sci,sci zerofill,precision=1]{\tick}%
    }%
    \pgfkeys{/pgf/fpu=false}%
}

在此处输入图片描述

相关内容