Pgfplots:如何填充曲线上的区域?

Pgfplots:如何填充曲线上的区域?

我正在使用 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}

在此处输入图片描述

相关内容