繁体   English   中英

如何在ggplot2中绘制具有不同因子的一维点的密度

[英]How to plot density of points in one dimension with different factors in ggplot2

我正在尝试使用ggplot2在图上放置单个点,但是由于有很多点,因此很难衡量点的密集程度。 在这里,有两个因素要与连续变量进行比较,我想更改这些点的颜色以反映它们与邻居的紧密程度。 我在ggplot2中使用geom_point函数来绘制点,但是我不知道如何在颜色上提供正确的信息。

这是我正在使用的代码:

s1 = rnorm(1000, 1, 10)
s2 = rnorm(1000, 1, 10)

data = data.frame(task_number = as.factor(c(replicate(100, 1), 
                                            replicate(100, 2))), 
                  S = c(s1, s2))

ggplot(data, aes(x = task_number, y = S)) + geom_point()

生成此图:

一维密度图

但是,我希望它看起来更像此图像,但具有一维而不是二维(我是从该网站借来的: https//slowkow.com/notes/ggplot2-color-by-density/ ):

2D密度图

如何更改第一个图的颜色使其类似于第二个图的颜色?

我认为棘手的事情是您想要显示原始值,然后评估这些值下的密度。 我从这里借来实现这一目标。

library(dplyr) 

data = data %>%
    group_by(task_number) %>%
    # Use approxfun to interpolate the density back to
    # the original points
    mutate(dens = approxfun(density(S))(S))

ggplot(data, aes(x = task_number, y = S, colour = dens)) +
    geom_point() +
    scale_colour_viridis_c()

结果:

在此处输入图片说明

当然,可以对每一个值提出一种与邻近值的接近度的度量...但是,调节透明度基本上不会达到相同的目标(衡量点的密集程度)吗?

geom_point(alpha=0.03)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM