有刻度标签,如 1、10、10^2、10^3,

有刻度标签,如 1、10、10^2、10^3,

我想要像1, 10, 10^2, 10^3, ...

到目前为止,我发现可以1, 10, 100, 1000, ... 用指数来显示它们。

使用 pgfplots 可以实现这一点吗?

答案1

是的,/pgf/number format/std不起作用。

\pgfmathprintnumber对于对数轴,不使用正常宏。而是$<base>^{\pgfmathprintnumber{<exponent>}}$使用默认宏。(参见pgfplots手册,第 4.12.2 节“PGFPlots 特定的数字格式”,第 227f 页。

下面的代码log number format basis用几个条件覆盖了存储在中的代码键。当然,构建这个条件的方法有很多种。

如果我们想使用\ifcase指数(#2),我们应该\pgfmathtruncatemacro先这样做,但对于这三种情况,这就足够了。

请注意,对于负指数,<base>^<exponent>再次使用:10 –1、10 –2

代码

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{
    log number format basis/.code 2 args={{%
    $
        \ifdim#2pt=0.0pt\relax
            1
        \else\ifdim#2pt=1.0pt\relax
                #1
            \else
                #1^{\pgfmathprintnumber{#2}}
            \fi
        \fi
        $%
    }},
}
\begin{document}
\begin{tikzpicture}
    \begin{semilogyaxis}[domain=0:10]
    \addplot {exp(x)};
    \end{semilogyaxis}
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容