我有一个 PDF 文件,我想使用该图像的子集作为 Tikz 轴的背景:
\begin{tikzpicture}
\begin{axis}[
grid=both,
xmin=-30, xmax=30,
ymin=0, ymax=45,
set layers]
\addplot[thick, color=blue, on layer=axis background]
graphics[xmin=-180,ymin=-90,xmax=180,ymax=90] {borders.pdf};
\end{axis}
\end{tikzpicture}
不幸的是,这不起作用,因为图像显示在背景中:
在 上standalone
,背景仅在轴的一侧可见,但在普通文档上,我可以看到整个图像。如果我删除on layer=axis background
,图像会按预期被裁剪,但它会在前景上,这是我不想要的(例如,它在网格线上方)。
我希望背景停止在轴边界处,可以吗?
如有必要,提供完整代码(可以使用任何图像作为背景):
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
grid=both,
xmin=-30, xmax=30,
ymin=0, ymax=45,
clip=true,
set layers]
\addplot[thick, color=blue, on layer=axis background]
graphics[xmin=-180,ymin=-90,xmax=180,ymax=90] {borders.pdf};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
添加clip mode=individual
到axis
选项后,剪辑将适用于图像,即使有on layer=axis background
。
on layer
手册中的描述中实际上提到了这一点pgfplots
:
请注意,如果你有两个地块使用不同的 值
on layer
,您可能还想使用 来启用clip mode=clip individual
或停用剪切功能clip=false
。剪切选项需要作为轴的选项提供,而不是图的选项。技术背景是,需要为应该进行绘图的图层复制剪切路径 - 否则它们将应用于错误的图层。
(第 4.27.3 节更改图形元素的图层,第 411 页,1.16 版手册pgfplots
,日期为 2018/03/28。)
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
grid=both,
grid style={blue}, % just to make it obvious with the given image
xmin=-30, xmax=30,
ymin=0, ymax=45,
clip=true,
set layers,
clip mode=individual % <-- add this
]
\addplot[thick, color=blue, on layer=axis background]
graphics[xmin=-180,ymin=-90,xmax=180,ymax=90] {example-image};
\addplot [very thick,red] {rand*30+20};
\end{axis}
\end{tikzpicture}
\end{document}