在 pgfplots 中的两条曲线之间填充。

在 pgfplots 中的两条曲线之间填充。

如何实现两条曲线之间的填充pgfplots?例如,我有

...
\addplot coordinates {(0,1) (1,1)};
\addplot file {something.dat};
...

我想在这些曲线之间进行填充。

答案1

您可以使用\pgfplotstablevertcat命令将坐标添加到数据中,然后fill在绘图时使用该选项:

\documentclass{文章}
\使用包{pgfplots}
\使用包{pgfplotstable}

\开始{文档}

\开始{tikzpicture}

% 加载数据
\pgfplotstableread{数据.dat}\数据

% 输入填充边界的坐标,按 x 值从高到低排序
\pgfplotstablesort[sort cmp={float >}]\coordinates{
0 0
1 1
}

% 连接两个系列
\pgfplotstablevertcat{\filledcurve}{\data}
\pgfplotstablevertcat{\filledcurve}{\coordinates}


\开始{轴}
% 绘制连接表
\addplot[fill=gray!40,draw=none] 表 {\filledcurve};

% 绘制数据和坐标以供参考
\addplot[blue,mark=*,line width=2pt]表{\data};
\addplot[orange,mark=*,line width=2pt] 表 {\coordinates};
\end{轴}
\结束{tikzpicture}

\结束{文档}

我的数据文件“data.dat”如下所示

0 2
0.5 -1
1 3

产生以下输出:

使用 pgfplots 填充两条曲线之间的区域

答案2

pgfplots 1.10 版刚刚发布,它为填充图表之间区域的问题提供了新的解决方案。

请注意,旧解决方案仍然可行且有效;此处仅提供可能简化任务的更新。为了使本网站的知识库保持最新,我fillbetween在此提供基于新库的解决方案:

在此处输入图片描述

\documentclass{standalone}
\usepackage{pgfplots}

\pgfplotsset{compat=1.10}
\usepgfplotslibrary{fillbetween}
\begin{document}

\begin{tikzpicture}

\begin{axis}
\addplot[name path=A,blue,mark=*,line width=2pt] table {
0 2
0.5 -1
1 3
};
\addplot[name path=B,orange,mark=*,line width=2pt] coordinates  {(0,0) (1,1)};

\addplot[gray!40] fill between[of=A and B];

\end{axis}
\end{tikzpicture}

\end{document}

解决方案取决于\usepgfplotslibrary{fillbetween}激活语法的哪个\addplot fill between[of=<first> and <second>]。填充区域的样式在选项列表中照常给出,它是gray!40。请注意,该fill between段将自动绘制在单独的层上,即它位于主路径后面。请注意,fill between与采样密度、输入类型甚至两个输入路径的绘图处理程序无关。

相关内容