小编Jon*_*nas的帖子

使用 ggplot2 的 stat_density_2d 仅显示高密度区域

我想将 stat_density2D 函数与分类变量一起使用,但将我的绘图限制在高密度区域,以减少重叠并提高易读性。

让我们以以下数据为例:

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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

使用 2D 密度图,我们获得重叠密度

ggplot(plot_data, aes(X, Y)) + 
  stat_density_2d(geom = "polygon", aes(alpha = ..level.., fill = Label))
Run Code Online (Sandbox Code Playgroud)

二维密度图

是否可以只绘制高密度区域(例如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))
Run Code Online (Sandbox Code Playgroud)

具有平方水平的二维密度图

..levels..是否可以要求 ggplot2/stat_density2D …

r ggplot2

5
推荐指数
1
解决办法
6181
查看次数

标签 统计

ggplot2 ×1

r ×1