如何在网格线下方绘制绘图背景?

如何在网格线下方绘制绘图背景?

我需要显示一个图,其背景以一定的 X 间隔绘制不同的颜色。我试过了,fill但它覆盖了网格和 X 轴和 Y 轴上的间隔标记。我知道我可以再次绘制它们,但我希望可以定义绘制顺序并在其他一切之前绘制填充(因为它背景)。

另外,我有很多间隔,那么有没有办法按照模式自动绘制它们(而不是为每个间隔复制粘贴代码)?

前任:

\begin{tikzpicture}
\begin{axis}[
  xmin=0, xmax=80,
  ymin=0, ymax=50,
  ymajorgrids=true,
  grid style=dashed,
]
\fill[red]    (0,0) rectangle (20,50);
\fill[green] (20,0) rectangle (40,50);
\fill[red]   (40,0) rectangle (60,50);
\fill[green] (60,0) rectangle (80,50);

\addplot[color=blue] coordinates {(0, 34.000000) (20, 40.000000) (40, 28.000000) (60, 37.000000) (80, 45.000000)};

\end{axis}
\end{tikzpicture}

答案1

添加axis on top选项axis意味着轴线、刻度和网格将打印在环境内部的东西上面。

您可以使用循环稍微自动化一下填充模式。

\documentclass[border=4mm]{standalone} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\begin{document} 
\begin{tikzpicture}
\begin{axis}[
  xmin=0, xmax=80,
  ymin=0, ymax=50,
  ymajorgrids=true,
  grid style=dashed,
  axis on top % <--------- added
]
\pgfplotsinvokeforeach{0,40}{
\fill[red]   (#1,\pgfkeysvalueof{/pgfplots/ymin}) rectangle (#1+20,\pgfkeysvalueof{/pgfplots/ymax});
\fill[green] (#1+20,\pgfkeysvalueof{/pgfplots/ymin}) rectangle (#1+40,\pgfkeysvalueof{/pgfplots/ymax});
}

\addplot[color=blue] coordinates {(0, 34.000000) (20, 40.000000) (40, 28.000000) (60, 37.000000) (80, 45.000000)};

\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

找到了如何使用层来解决我的一个问题。在序言中:

\pgfdeclarelayer{background}    % declare background layer
\pgfsetlayers{background,main}  % set the order of the layers (main is the standard layer)

还有 Tikz:

\begin{tikzpicture}
\begin{axis}[
  xmin=0, xmax=80,
  ymin=0, ymax=50,
  ymajorgrids=true,
  grid style=dashed,
]

\begin{pgfonlayer}{background} 
    \fill[red]    (0,0) rectangle (20,50);
    \fill[green] (20,0) rectangle (40,50);
    \fill[red]   (40,0) rectangle (60,50);
    \fill[green] (60,0) rectangle (80,50);
\end{pgfonlayer}

\addplot[color=blue] coordinates {(0, 34.000000) (20, 40.000000) (40, 28.000000) (60, 37.000000) (80, 45.000000)};

\end{axis}
\end{tikzpicture}

现在我唯一想知道的是如何自动绘制这种图案。

相关内容