答案1
要设置 y 轴上刻度之间的距离,请添加\OrdBode{<value>}
前 \semilog...
。在您的例子中,\OrdBode{20}
。然后更改宏的最后两个参数\semilog
,设置轴的下限和上限。为了保持相同的整体高度,yscale
将 的tikzpicture
减半。
bodegraph
还有一个\UnitedB
宏,用于向轴添加标签。在 之前添加\semilog...
。如果您只想要 y 标签,请重新定义\Unity
宏,而不是发出\UnitedB
,请参阅下面代码中的注释。要更改 y 标签的默认位置,请修改样式semilog label y
,如下所示。
对于第二组刻度标签,请注意刻度的 x 坐标是指数。因此,在您的情况下,轴的左侧,x 值为10^(-2)
,TikZ 实际使用的坐标是-2
。由于 y 轴是线性的,而不是对数的,因此坐标与值相同,因此-40
对于下端,20
对于上限。(换句话说,传递给的四个值\semilog
是 TikZ 实际使用的坐标的 x 和 y 极限。)
因此,您可以将一系列节点放置在,例如,x=-3
和y={-40, -20, 0, 20}
。
\documentclass{article}
\usepackage{bodegraph} % loads tikz
\begin{document}
\begin{tikzpicture}[
yscale=1/30,xscale=7/5, % changed y-scale
semilog label y/.append style={above right} % change anchor of y-label
]
\UnitedB % add labels to axes
%\renewcommand\Unity{dB} % use this instead of \UnitedB if you only want the y-label
\OrdBode{20} % ytick every 20
\semilog{-2}{3}{-40}{20} % changed y-limits
\node [above right,font=\tiny,red] at (-3,20) {lin}; % add label for second axis
% add new ticklabels
\foreach [count=\i from -2] \y in {-40,-20,0,20}
\node [font=\tiny,red] at (-3,\y) {$10^{\i}$};
\end{tikzpicture}
\end{document}
答案2
您始终可以从相应的样式文件中查找命令,并以此为基础创建自己的命令。我这样做是为了\semilog
得到结果。
\documentclass{article}
\usepackage{bodegraph}
\usepackage{tikz}
\newcommand{\semilogLabelY}[5][]{ %based on \semilogNS from bodegraph.sty
\pgfmathtruncatemacro{\Valsuivante}{#4+\valpas}
\foreach \yy in {#4,\Valsuivante,...,#5}{
\pgfmathtruncatemacro{\ylabel}{\yy/10}
\node[semilog label y, node distance=0.3em]at ({#2-1},\yy) {$10^{\ylabel}$};
}}
\begin{document}
\begin{tikzpicture}[yscale=2/30,xscale=7/5]
\semilog{-2}{3}{-20}{10}
\semilogLabelY{-2}{3}{-20}{10}
\end{tikzpicture}
\end{document}