我想要像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}