我想将 stat_密度2D 函数与分类变量一起使用,但将绘图限制在高密度区域,以减少重叠并提高易读性。
我们以以下数据为例:
plot_data <-
data.frame(X = c(rnorm(300, 3, 2.5), rnorm(150, 7, 2)),
Y = c(rnorm(300, 6, 2.5), rnorm(150, 2, 2)),
Label = c(rep('A', 300), rep('B', 150)))
ggplot(plot_data, aes(X, Y, colour = Label)) + geom_point()
通过二维密度图,我们获得重叠密度
ggplot(plot_data, aes(X, Y)) +
stat_density_2d(geom = "polygon", aes(alpha = ..level.., fill = Label))
是否可以只绘制高密度区域(例如level>0.03
)?我找到的唯一解决方案是“作弊”并手动修改..levels..
变量,可以是阶跃函数,也可以是任何幂变换,就像这个简单的例子一样。
ggplot(plot_data, aes(X, Y)) +
stat_density_2d(geom = "polygon", aes(alpha = (..level..) ^ 2, fill = Label)) +
scale_alpha_continuous(range = c(0, 1))
而不是修改..levels..
变量,是否可以要求 ggplot2/stat_密度2D 函数仅关注特定范围的密度级别?我尝试过玩range
or limits
的论点scale_alpha_continuous
函数没有任何相关结果...
Thanks!