在 pgfplot 中的垂直线之间阴影多个区域

在 pgfplot 中的垂直线之间阴影多个区域

我正在处理pgfplots垂直线之间的阴影区域。因此基本上要创建矩形,受 x 轴上的 2 个值限制。

这可以通过使用 进行绘制来实现tikz,但我想创建多个这样的形状。例如,我在 x 轴上有 100 个值,我想将它们配对,以便为值 1 和 2、3 和 4 之间的区域着色;等等。

如果我将它们定义为类似的函数,我想过将所有 x 值与偶数/不偶数索引分开,然后填充中间的区域x=(x-value)

我知道,这个问题更像是一个谜语而不是一个直接的pgfplots问题,但可能我只是没有意识到确实有一个非常简单的解决方案。

梅威瑟: 在这里,我想为 2 到 4 和 5 到 6 之间的所有内容添加阴影

\documentclass{article}
\usepackage{pgfplots}

\begin{document}


    \begin{figure}[h]
        \centering
        \begin{tikzpicture}
        \begin{axis}[
        xlabel = {$x$},
        ylabel = {$y$},
        %ymin = -3, ymax = 3,
        ]
        \addplot[black,only marks]
        table[x=A,y=B] {
            A   B
            2   0
            4   0
            5   0
            6   0
                };
        \end{axis}
        \end{tikzpicture}
    \end{figure}
\end{document}

编辑:我想到使用 Excel 的可能解决方案:

\fill [green,opacity=0.9] (axis cs:2,0) rectangle (axis cs:4,10);

这会创建阴影区域。我插入了 x 值列表,并让 excel 创建一个包含插入的 x 值的列表。然后返回 pgfplot,它就可以正常工作了。但可能还有更优雅的方法。

答案1

您可以使用循环,例如\pgfplotsinvokeforeach

在此处输入图片描述

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14} % with compat=1.11 or higher axis cs is the default coordinate system, so you don't have to state that explicitly in the \fill below
\begin{document}
        \begin{tikzpicture}
        \begin{axis}[
        xlabel = {$x$},
        ylabel = {$y$},
        %ymin = -3, ymax = 3,
        ]
        \addplot[black,only marks]
        table[x=A,y=B] {
            A   B
            2   0
            4   1
            5   0
            20   1
                };

\pgfplotsinvokeforeach{2,4,...,20}{
   \fill [blue!10]
       (#1,\pgfkeysvalueof{/pgfplots/ymin})
         rectangle 
       (#1+1,\pgfkeysvalueof{/pgfplots/ymax});}
        \end{axis}
        \end{tikzpicture}
\end{document}

相关内容