Tikz 轴宽度和高度键没有获得正确的纵横比

Tikz 轴宽度和高度键没有获得正确的纵横比

当我尝试在 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=3ymax=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}

在这两种情况下,TiZ 确实产生了适当的纵横比。

更新我确认更新的问题中描述的功能,即“width=0.2\textwidth, height=0.3\textwidth”存在问题。严格来说,这个问题不会发生在全部前因子,但它从某个临界宽度(大约 10cm)开始,如果宽度变小,情况会变得更糟。因此,上述答案对于更新后的问题来说肯定是无关紧要的。

相关内容