在绘制轴和网格之前在 pgfplot 中绘制轴

在绘制轴和网格之前在 pgfplot 中绘制轴

有没有办法使用轴坐标绘制一些东西(axis cs:x,y) 轴线和网格是怎么画出来的?

也就是说,我想用 tikz 绘制矩形,为绘图的不同区域提供不同的背景,但是,我在文档中找到的唯一内容似乎是before end axis可以使用具有轴 cs 的自己的 tikz 绘图开始的最早时间点。

答案1

正如马克正确指出的那样,您可以使用pgflayers。他们提供的正是工具!

然而,我想向您展示解决这个问题的另一种方法,由于它是在轴坐标系中,所以这也可以简化这个过程。

基本上你需要知道的是,你可以background使用以下键访问样式:axis background。一旦你有了这个,你就可以应用TiKz你想要的一切!我们很幸运,在绘制背景之前计算了轴环境。

您应该知道,您可以使用以下键轻松访问当前图片:path picture。通过将其与postaction或结合使用,preaction您几乎可以安全回家!:)

我在这里所做的是访问axis cs,然后添加适当的矩形。您可以在这里自由地做任何您想做的事情。添加节点、绘制任意东西等。但是,如果您想注释某个兴趣点,我们鼓励您通过其他方式进行注释。

但请注意,picture bounding box由于轴校正,这并不正确,因此您不应使用它。

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[axis background/.style={%
        postaction={ % Lets you draw after the background is drawn
            path picture={ % access the background picture
                \fill[opacity=0.5,blue] (axis cs:-5,0) rectangle (axis cs:-4,2e4);
                \fill[opacity=0.5,red] (axis cs:-5,2e4) rectangle (axis cs:-4,6e4);
                \fill[opacity=0.5,green] (axis cs:-4,.8e4) rectangle (axis cs:5,6e4);
            }
        },shade,top color=gray,bottom color=white
    },legend style={fill=white}]
    \addplot {exp(-2*x)};
    \addplot {exp(-2.2*x)};
    \legend{$e^{-x}$,$e^{-4x}$}
  \end{axis}
\end{tikzpicture}
\end{document}

其结果为:

输出

相关内容