我想在一个 x 和 y 都介于 0 到 10 之间的绘图中对角位于 (0,0)、(10,5)、(10,10) 和 (5,10) 的多边形进行阴影处理,为此,我使用了以下代码
\documentclass{article}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
axis x line=bottom,
axis y line=left,
ticks=none,
xmin=0,xmax=10,
ymin=0,ymax=10,
]
\addplot[draw=none,fill=gray!30!white] (0,0) -- (10,5) -- (10,10) -- (5,10) -- cycle;
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
得出的结果是
尽管多边形的形状符合预期,但它比我预期的要小得多。就好像它以某种方式被缩小了一样。我做错了什么?
答案1
在文档的序言中添加\pgfplotsset{compat=1.18}
(或其他足够新的版本号)。如果您没有设置,您实际上应该会收到一条警告,提示compat
您“正在向后兼容模式下运行”。
在这个具体案例中,这意味着什么?在旧版本的 PGFPlots 中,常规\path
构造中的坐标使用与环境不同的坐标系axis
,除非您axis cs:
在相关坐标前面明确添加(例如(axis cs:10,10)
)。今天,如果您没有通过选项声明足够新的版本compat
,出于兼容性原因,将保留此行为。在较新版本的 PGFPlots 中,您不需要声明axis cs
,但您需要为此设置。要了解更多信息,请在手册或本网站上compat
查找axis cs
和。compat
通过添加这一行,您的代码将按预期工作(请注意,pgfplots
已经加载tikz
,因此无需单独加载):
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
axis x line=bottom,
axis y line=left,
ticks=none,
xmin=0, xmax=10,
ymin=0, ymax=10,
]
\addplot[draw=none, fill=gray!30] (0,0) -- (10,5) -- (10,10) -- (5,10) -- cycle;
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}