裁剪轴内的背景图像

裁剪轴内的背景图像

我有一个 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=individualaxis选项后,剪辑将适用于图像,即使有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}

相关内容