我正在尝试阅读软件包的文档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
xscale
和yscale
都只是比例因子。
虽然我没看过代码,但它看起来像bodegraph
x 轴上的主要网格线之间默认有 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}