xscale 和 yscale 在 TiKZ 中如何工作?

xscale 和 yscale 在 TiKZ 中如何工作?

我正在尝试阅读软件包的文档bodegraph(它是法语的!),第三个示例立即使用代码为两个图生成两个网格。这是 MWE 和图片:

\documentclass{article}
\usepackage{tikz}

\usepackage{bodegraph}

\begin{document}

\begin{tikzpicture}[xscale=7/5]
\begin{scope}[yscale=3/80]
\UnitedB
\semilog{-1}{4}{-60}{20}
\end{scope}
\begin{scope}[yshift=-3cm,yscale=3/180]
\UniteDegre
\OrdBode{30}
\semilog{-1}{4}{-180}{0}
\end{scope}
\end{tikzpicture}

\end{document}

伯德图网格

在我看来,它们看起来很小,但我不明白它们是如何xscale=m/n工作yscale=p/r的。如果有人能向我解释如何让它们尽可能宽,我将不胜感激。0.5\textwidth如何工作的。如果有人向我解释如何使它们的宽度与或一样\textwidth,并使它们具有相同的高度,

提前致谢

答案1

xscaleyscale都只是比例因子。

虽然我没看过代码,但它看起来像bodegraphx 轴上的主要网格线之间默认有 1 个单位(每个数量级)。由于您的图表涵盖了五个数量级,因此xscale=7/5将给出一个宽度为 7 个单位的图表,加上轴标签的宽度。TikZ 中的默认单位向量长 1 厘米,因此 7 个单位就是 7 厘米。

对于 y 来说,看起来最初没有进行缩放,因此yscale,范围从 -60 到 20 的图表将有 80 个单位(80 厘米)高。因此,yscale=3/80给出的轴高为 3 厘米。

两个图表的高度相同,因为第一个图表的范围是 80,yscale=3/80,而第二个图的范围为 180 至yscale=3/180

如果要设置相对于 的宽度\textwidth,可以执行以下操作。\pgfmathsetmacro不是绝对必要的,您可以将整个计算直接放入 中yscale

\documentclass{article}
\usepackage{showframe}

\usepackage{bodegraph}
% use 0.85 to allow for axis labels
\pgfmathsetmacro{\textwidthScaleFactor}{0.85\textwidth*2.54/72.27}
\begin{document}
\begin{center}
% diagram covers 5 orders of magnitude, so 1/5
\begin{tikzpicture}[xscale=1/5*\textwidthScaleFactor]
\begin{scope}[yscale=3/80]
\UnitedB
\semilog{-1}{4}{-60}{20}
\end{scope}
\begin{scope}[yshift=-3cm,yscale=3/180]
\UniteDegre
\OrdBode{30}
\semilog{-1}{4}{-180}{0}
\end{scope}
\end{tikzpicture}
\end{center}
\end{document}

相关内容