我想在图表上方和下方绘制置信区域,如下所示:
(来自https://towardsdatascience.com/recreating-netflixs-quantile-bootstrapping-in-r-a4739a69adb6)
我不太清楚如何在 pgfplots 中做到这一点?
让我们说一些开始工作的最少代码:
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents*}{data.txt}
X Y CI95
1 1.50 0.39
2 1.05 0.21
3 0.50 0.14
4 0.20 0.05
5 0.35 0.35
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
]
\addplot [] table [x=X, y=Y]{data.txt};
\addplot [] table [x=X, y=CI95]{data.txt};
\end{axis}
\end{tikzpicture}
\end{document}
(这些数字与博客文章中描绘的图表不符,但概念相似,即有y
-值和ci 95%
值)
编辑:偶然发现https://pgfplots.net/error-intervals/ 也许有用?
这看起来也相关:Pgfplots \closedcycle 引入了不必要的斜率
答案1
弄清楚了 :)
基本上,我们用来y expr
在线上方和下方绘制置信限度。我们使用新fillbetween
包来填充这些线之间的区域。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\usepackage{filecontents}
\begin{filecontents*}{data.txt}
X Y CI95
1 1.50 0.39
2 1.05 0.21
3 0.50 0.14
4 0.20 0.05
5 0.35 0.35
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
]
\addplot [name path=lower, fill=none, draw=none] table [
x=X, y expr=\thisrow{Y} - \thisrow{CI95}]{data.txt};
\addplot [name path=upper, fill=none, draw=none] table [
x=X, y expr=\thisrow{Y} + \thisrow{CI95}]{data.txt};
\addplot[green!40] fill between[of=lower and upper];
\addplot [] table [x=X, y=Y]{data.txt};
\end{axis}
\end{tikzpicture}
\end{document}
请注意,也可以使用例如 使置信区域透明fill opacity=0.2
。这样您就可以拥有多个重叠的线和 CI 区域,并且重叠的 CI 区域比非重叠的位略暗。