我使用 10 个坐标以 0.1 步长绘制了一条线,范围从 0 到 1。每个 Y 坐标都是一个平均值。我有每个平均值的方差,并想在描述方差的函数周围绘制一个填充区域。到目前为止,我的代码如下:
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{subfig}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{figure}[h!]
\begin{subfigure}[t]{0.82\textwidth}
\resizebox{1\textwidth}{!}{%
\begin{tikzpicture}
\begin{axis}[
xmin=0, xmax=1.1,
ymin=16.9, ymax=17.3,
xlabel={x}, ylabel={y}, axis lines=left,
xtick={0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1},
xticklabels={0, , , , , 0.5, , , , , 1},
ytick distance={0.1},
xticklabel style={rotate=-0, yshift=-0.4ex},
xlabel style={anchor=north},
xmajorgrids=true,
grid style=dashed,
legend pos=outer north east,
height=6cm,
]
\addplot coordinates {
(0, 17.2)
(0.1, 16.91)
(0.2, 17.04)
(0.3, 17.26)
(0.4, 17.11)
(0.5, 17.08)
(0.6, 17.11)
(0.7, 17.24)
(0.8, 17.23)
(0.9, 17.16)
(1, 17.22)
};
\end{axis}
\end{tikzpicture}
}
\caption{my cap}
\end{subfigure}%
\end{figure}
\end{document}
例如,每个 Y 坐标的方差应为 0.1 到 0.3,可视化为函数/线周围的填充。我想指定方差,从而为 10 个点中的每一个单独指定函数周围的“管”的大小。如何实现这一点?我的方差值为:
(0, 0.03)
(0.1, 0.03)
(0.2, 0.06)
(0.3, 0.01)
(0.4, 0.02)
(0.5, 0.03)
(0.6, 0.05)
(0.7, 0.11)
(0.8, 0.04)
(0.9, 0.09)
(1, 0.05)
答案1
我解决了。使用坐标时,必须绘制两条新线并为其命名。一条用于方差/标准差的上限,一条用于下限。然后填充这些命名线之间的区域。加载包后,还需要两个命令才能实现此功能。
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{subfig}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{intersections} % added (!)
\usepgfplotslibrary{fillbetween} % added (!)
\begin{document}
\begin{figure}[h!]
\begin{subfigure}[t]{0.82\textwidth}
\resizebox{1\textwidth}{!}{%
\begin{tikzpicture}
\begin{axis}[
xmin=0, xmax=1.1,
ymin=16.9, ymax=17.3,
xlabel={x}, ylabel={y}, axis lines=left,
xtick={0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1},
xticklabels={0, , , , , 0.5, , , , , 1},
ytick distance={0.1},
xticklabel style={rotate=-0, yshift=-0.4ex},
xlabel style={anchor=north},
xmajorgrids=true,
grid style=dashed,
legend pos=outer north east,
height=6cm,
]
\addplot coordinates {
(0, 17.2)
(0.1, 16.91)
(0.2, 17.04)
(0.3, 17.26)
(0.4, 17.11)
(0.5, 17.08)
(0.6, 17.11)
(0.7, 17.24)
(0.8, 17.23)
(0.9, 17.16)
(1, 17.22)
};
\addplot[name path=down,color=blue!70] coordinates {
(0, 17.1)
(0.1, 16.81)
(0.2, 17.00)
(0.3, 17.16)
(0.4, 17.01)
(0.5, 17.00)
(0.6, 16.90)
(0.7, 17.14)
(0.8, 17.13)
(0.9, 17.06)
(1, 17.00)
};
\addplot[name path=up,color=blue!70] coordinates {
(0, 17.3)
(0.1, 17.05)
(0.2, 17.14)
(0.3, 17.35)
(0.4, 17.23)
(0.5, 17.2)
(0.6, 17.21)
(0.7, 17.34)
(0.8, 17.33)
(0.9, 17.26)
(1, 17.30)
};
\addplot[blue!50,fill opacity=0.4] fill between[of=down and up];
\end{axis}
\end{tikzpicture}
}
\caption{my cap}
\end{subfigure}%
\end{figure}
\end{document}
一个缺点是,这个解决方案一点也不简洁。但是,它给出了一个没有任何条形的漂亮绘图。我根据以下问题构建了解决方案:问题 1和第二季度。
结果,范围略有调整: