轴相等= true 和 xmin 之间的相互作用(我猜还有 xmax)

轴相等= true 和 xmin 之间的相互作用(我猜还有 xmax)

我想在使用时为绘图中的某个区域着色axes equal=true。但是,我假设的部分区域没有被着色。这是我的 MWE

\documentclass{article}
\usepackage{pgfplots}

\pgfplotsset{compat=1.17} 

\begin{document}

     \begin{figure}
     \centering
     \begin{tikzpicture}
        \begin{axis}[ 
           axis equal=true,
           axis lines=middle,
           axis on top,
           ticks=none, 
           xmin=-3,xmax=3,
           ymin=-3,ymax=3,
           ]
          \addplot[draw=none,fill=gray!20!white] (-3,-3) -- (-1.125,-3) -- (0.375,3) -- (-3,3) -- cycle;
        \end{axis}
     \end{tikzpicture}
     \end{figure}

\end{document}

这是我得到的输出

在此处输入图片描述

由于某种原因,使用equal axis=true会使 x 轴超出值xmin,这会使我的阴影区域太小。但是,如果我注释掉equal axis=true指令,阴影区域看起来就完全符合我的要求(但我需要指令equal axis=true来确保我打算绘制的垂直线确实垂直)。

在此处输入图片描述

答案1

pgfplots 手册提到(第 4.10.1 节常见缩放选项,重点是我的):

/pgfplots/axis equal={true,false}
每个单位向量的长度都相同,轴的尺寸保持不变。这样,x 和 y 方向上每个单位的尺寸比例就相同了。
轴限值将会扩大以补偿缩放效应。

因此确实xmin没有遵守设置。在示例之后,手册提到:

配置axis equal=true实际上只是设置的样式unit vector ratio=1 1 1, unit rescale keep size=true

查找unit rescale keep size

/pgfplots/unit rescale keep size=true|false|unless limits declared
在默认配置中,即使单位向量比涉及不同的缩放比例,pgfplots 仍会保持原始轴尺寸。它通过扩大限制来实现这一点。

将其设置为unless limits declared可防止xmin更改。我不能 100% 确定此设置(与 结合unit vector ratio=1 1 1)是否真的创建了相等的轴,但它似乎有效。代码:

\documentclass{article}
\usepackage{pgfplots}

\pgfplotsset{compat=1.17} 

\begin{document}

     \begin{figure}
     \centering
     \begin{tikzpicture}
        \begin{axis}[ 
           %axis equal=true,
           unit vector ratio=1 1 1,
           unit rescale keep size=unless limits declared,
           axis lines=middle,
           axis on top,
           ticks=none,
           xmin=-3,xmax=3,
           ymin=-3,ymax=3,
           ]
          \addplot[draw=none,fill=gray!20!white] (-3,-3) -- (-1.125,-3) -- (0.375,3) -- (-3,3) -- cycle;
        \end{axis}
     \end{tikzpicture}
     \end{figure}

\end{document}

相关内容