我正在使用 pgfplots,图表上有一条曲线,基本上是一个矩形。我想给它上面的部分上色,而不是下面的部分。我有以下代码:
\addplot[fill=\sixthplotcolor, fill opacity=0.5, thick, mark=none, color=\sixthplotcolor]
coordinates {
(1, 40)
(10, 400)
(100, 4000)
(150, 6000)
(200, 8000)
(250, 10000)
(300, 12000)
(350, 14000)
(500, 20000)
(750, 30000)
(1000, 40000)
} \closedcycle;
哪些颜色在曲线下方,但不在曲线上方。
有人能帮帮我吗?抱歉问了个愚蠢的问题,我是 pgfplots 的新手。
答案1
pgfplots 1.10 版刚刚发布,它为填充图表之间区域的问题提供了新的解决方案。
对于您的简单情况,打击乐的答案是正确的。
但是,对于稍微复杂一点的东西,以下方法可能值得了解:它允许通过库填充任意两个图之间的区域fillbetween
。为了使本网站的知识库保持最新,我fillbetween
在此提出了一个基于新库的解决方案:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[name path=f, fill=red, fill opacity=0.5, thick, mark=none]
coordinates {
(1, 40)
(10, 400)
(100, 4000)
(150, 6000)
(200, 8000)
(250, 10000)
(300, 12000)
(350, 14000)
(500, 20000)
(750, 30000)
(1000, 40000)
};
\path[name path=axis] (axis cs:0,40000) -- (axis cs:1000,40000);
\addplot[gray!50] fill between[of=f and axis];
\end{axis}
\end{tikzpicture}
\end{document}
此解决方案依赖于\usepgfplotslibrary{fillbetween}
:它将 分配name path=f
给感兴趣的函数。然后,它生成一个\path
既未绘制也未填充的人工路径:此路径位于。最后,它通过 填充y=40000
之间的区域。f and axis
\addplot fill between
答案2
正如评论中所说,对于这个具体的例子,使用预定义的特殊坐标和正交线可以用来实现目标。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[fill=red, fill opacity=0.5, thick, mark=none]
coordinates {
(1, 40)
(10, 400)
(100, 4000)
(150, 6000)
(200, 8000)
(250, 10000)
(300, 12000)
(350, 14000)
(500, 20000)
(750, 30000)
(1000, 40000)
} -| (current plot begin);
\end{axis}
\end{tikzpicture}
\end{document}