我想在使用时为绘图中的某个区域着色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}