ggplot2で点の密度に基づいて変化するアルファベットを持つgeom_ribbon(または他の領域ベースのgeom)を生成する方法はありますか?ggplot2:各xのy軸に沿ったデータ密度に依存するalphaを持つgeom_ribbon
次のコードは、各サンプルに対してランダムなx値を持つ50のノイズの多い正弦波を生成します。私は何千ものリサイズが必要なので、すべての点を描きたくないので、これらの点をすべて要約したいと思います。
簡単な方法は、95%分位数をカバーするgeom_ribbonを描画することです。しかし、最初に、各リサンプルについてx値が同じでない場合には、これを計算するのは簡単ではありません。通常は、100 xの各点でポイントごとの分位数を計算します。
代わりに、サンプルが配置されている領域全体をカバーするリボンを、連続的なアルファグラデーション、つまりリボンが実際の線の近くで最も暗く、外れ点で非常に明るいようにしたいとします。これは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)
完璧、ありがとう。大規模なデータセットを使用している場合は、geom_ribbon呼び出しでalpha = sort(group)を設定する必要があります。それ以外の場合は、グループ59が591から次に分位すると考えられます。 –