我在使用 pgfplots 时遇到了问题,花了一段时间才将问题最小化。我尝试添加两条线并填充它们之间的区域。曲线的点超出了轴区域。使用“compat=newest”会导致图形过大。使用“compat=default”时,图形会在轴处被剪裁。
以下 MWE 显示了该问题:
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-90,
xmax=90,
ymin=-90,
ymax=90,
]
\addplot[name path=A] table{
-90 -80
90 100
};
\addplot[name path=B] table{
-90 -100
90 80
};
\addplot fill between[of=A and B];
\end{axis}
\end{tikzpicture}
\end{document}
我尝试添加一些示例图片,但由于背景为白色,您无法看出差异。我一直在尝试获取可行的样本。
在这个例子中,图形比预期的稍微大一点。但在我的实际文件中,它的高度增加了约 50%,导致间距非常尴尬。现在我解决了这个问题compat=default
。还有其他解决方案吗?提前谢谢您。
答案1
这是自 1.8 版以来的预期行为。我们可以通过设置键来“修复”它clip bounding box
,如 v 1.12 手册第 325 页所述。在 1.8 版之前,此键的默认值为default tikz
,它将边界框剪裁到轴上。现在,默认值为upper bound
,这会改变行为,如您所见。关键字compat=default
引入了版本pre 1.3
(在 v 1.12 手册第 11 页中有说明),因此使用旧行为。我们可以通过简单地设置 中相应键的值来恢复旧行为pgfplotsset
:
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.12, clip bounding box=default tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-90,
xmax=90,
ymin=-90,
ymax=90,
]
\addplot[name path=A] table{
-90 -80
90 100
};
\addplot[name path=B] table{
-90 -100
90 80
};
\addplot fill between[of=A and B];
\end{axis}
\end{tikzpicture}
\end{document}