我正在处理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}