【发布时间】:2016-09-16 12:55:06
【问题描述】:
在 ggplot2 中是否有办法根据点的密度生成具有不同 alpha 的 geom_ribbon(或其他基于区域的几何图形)?
以下代码生成 50 个嘈杂的正弦波,每个样本都有随机的 x 值。我不想画出每一个点,因为我可能需要一千个或更多的重新采样,所以我想总结所有这些点。
一个简单的方法是绘制一个覆盖 95% 分位数的 geom_ribbon。然而,首先这并不容易计算,因为每个重采样的 x 值都不相同;通常,您会计算 100 个 x 点中每个点的逐点分位数。
相反,我希望色带覆盖样本所在的整个区域,具有连续的 alpha 渐变,即色带在靠近实际线的中间最暗,在异常点处非常亮。这在 ggplot2 中可能吗?
library(ggplot2)
num_points = 100
num_samples = 50
x = seq(0, 4*pi, length.out=num_points)
sim <- lapply(1:num_samples, function(f) {
x = runif(num_points, 0, 4*pi)
y = sin(x) + rnorm(num_points, 0, 0.4)
data.frame(x=x, y=y)
})
sim.df <- do.call(rbind, sim)
actual = data.frame(x=x, y=sin(x))
ggplot(sim.df, aes(x=x, y=y)) +
geom_point(alpha=0.7) +
geom_line(data=actual, colour='blue', size=1.5)
【问题讨论】: