我目前正在使用该semilogy
环境,并想知道如何控制它们是否实际占用10 log
或占用20 log
。
答案1
在这种情况下,您依赖的方法y filter
是正确的。但是,它对不同的值进行操作,具体取决于您使用的是对数轴还是线性轴:对数轴提供值的对数作为输入y filter
。由于您明确需要对数基数 10,因此您需要log basis y=10
为对数轴指定(否则您将拥有对数基数 e)。
采用对数滤波器的线性轴与将值乘以 20 的对数轴之间的区别仅在于轴的描述。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+[
y filter/.code={\pgfmathparse{20*log10(\pgfmathresult)}},
]
{10^x};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{semilogyaxis}[
log basis y=10,
ytickten={-100,-50,...,100},
]
\addplot+[
y filter/.code={\pgfmathparse{20*\pgfmathresult}},
]
{10^x};
\end{semilogyaxis}
\end{tikzpicture}
\end{document}
答案2
我自己针对正常环境的解决方案axis
:
every axis plot/.style={ y filter/.code={\pgfmathparse{20*log10(\pgfmathresult)}\pgfmathresult} },