当我尝试在 tikzpicture 中设置轴环境的宽度和高度时遇到问题。考虑以下 MWE:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0, xmax=2,
ymin=0, ymax=3,
width=2\textwidth,
height=3\textwidth,
xmajorticks=false,
ymajorticks=false,
xmajorgrids,
ymajorgrids,
]
\end{axis}
\end{tikzpicture}
\end{document}
为什么使用此代码输出图形的纵横比确实(接近)3:2:
但如果我改变台词
width=2\textwidth,
height=3\textwidth,
到
width=2\textwidth,
height=3\textwidth,
我得到的输出是倾斜的(纵横比大约为 2.5:1)(顺便说一句,也可以从网格线不再创建正方形而是矩形这一事实中看出)
我尝试阅读手册,但没有找到任何东西(我可能没有寻找正确的关键字)。
我错过了什么?
编辑
抱歉,这么晚了我不该发帖。我本来想写的是:但如果我改了台词
width=2\textwidth,
height=3\textwidth,
到
width=0.2\textwidth,
height=0.3\textwidth,
我得到的输出是歪斜的。
实际上,这适用于任何其他数字。如果我保持宽高比不变,但更改宽度和高度的绝对值,则我使用的值越小,生成的图片就会越倾斜
再次对给您带来的麻烦表示歉意。
答案1
我找到了解决方案。pgfplots 手册中明确说明了这一点,只需找到它即可:
请注意,pgfplots 仅估计轴和刻度标签所需的大小。估计假设轴框外的任何内容都有固定的空间量。这会导致最终图像可能比规定的尺寸略大或略小。但是,固定量始终相同;它设置为 45pt。这意味着具有相同目标尺寸的多张图片的轴框大小相同 - 即使描述的大小有所不同。也可以将轴框缩放到规定的宽度/高度。在这种情况下,由于轴描述,总宽度会更大。但是,轴框会精确填充所需的尺寸。[...] 如果启用了仅缩放轴,则宽度和高度仅适用于轴矩形。因此,生成的图形大于宽度和高度(因为任何轴描述)。但是,轴框具有完全规定的目标尺寸。如果仅缩放轴 = false(默认值),pgfplots 将尝试生成所需的宽度,包括标签、标题和刻度。
因此,要获得适合所有尺寸的纵横比,只需添加scale only axis
到环境的选项键即可axis
。
答案2
假设你想写
“将 width=2\textwidth、height=3\textwidth 更改为 width=3\textwidth、height=2\textwidth”
那么你的代码确实会生成高宽比为 3^2/2^2=2.25 的矩形,接近 2.5。但是,一旦你也调整了xmax=3
和ymax=2
,你就会回到正方形。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0, xmax=3,
ymin=0, ymax=2,
width=3\textwidth,
height=2\textwidth,
xmajorticks=false,
ymajorticks=false,
xmajorgrids,
ymajorgrids,
]
\end{axis}
\end{tikzpicture}
\end{document}
在这两种情况下,Ti钾Z 确实产生了适当的纵横比。
更新我确认更新的问题中描述的功能,即“width=0.2\textwidth, height=0.3\textwidth”存在问题。严格来说,这个问题不会发生在全部前因子,但它从某个临界宽度(大约 10cm)开始,如果宽度变小,情况会变得更糟。因此,上述答案对于更新后的问题来说肯定是无关紧要的。