我正在尝试绘制一条预测线及其周围的不确定带,但我希望该带具有梯度(接近线的黑色,带末端的浅色)。我发现 geom_lineribbon() 是为此开发的,但似乎只有在我有样本数据或分析分布时才有效。我看到它接受美学 ymin 和 ymax,我用它们成功地制作了乐队,但我无法获得乐队中的渐变。 有谁知道该怎么做吗?
(示例)数据包含以下变量:
例如:
x <- seq(0.2, 2.5, by = 0.1)
y <- 2*x +1
ymin <- 1.5*x + 0.5
ymax <- 1.5*x + 2.5
df <- data.frame(x = x,
y = y,
ymin = ymin,
ymax = ymax)
然后我可以使用以下代码制作线条和不确定性带,但它只给我一个灰色带,没有渐变:
ggplot(data = df,
mapping = aes(x = x, y = y,
ymin = ymin, ymax = ymax)) +
geom_lineribbon() +
scale_fill_brewer()
我希望scale_fill_brewer() 会包含一些颜色,但事实并非如此。我认为我需要指定 .width,但如果我没有样本/分布而只有边界,我不知道该怎么做。我原以为 geom_lineribbon() 可以做到这一点,因为它需要美学 ymin 和 ymax,但我找不到这样的例子,而且我尝试的各种 fill / fill_ramp 组合都不起作用。
您可以将功能区基于正态分布,其中 ymax 和 ymin 值任意为 2 个标准差。然后简单地叠加许多具有较小透明度值的丝带:
library(ggplot2)
ggplot(df, aes(x, y)) +
lapply(qnorm(seq(0.5, pnorm(2), length = 100))/2, function(i) {
geom_ribbon(aes(ymin = y - i*(y - ymin), ymax = y + i*(ymax - y)),
fill = "blue4", alpha = 0.01)
}) +
geom_line(color = "blue4", linewidth = 1) +
theme_minimal(base_size = 16)