写在前面
今天在看一篇单细胞文章的时候,看到一个挺精致的图形,如下图所示:
我称之为“密度散点图”,因为它像我们平时看到的散点图类似,就是又加上了密度属性。
于是萌生了复现它的想法,随便找了个别人造好的轮子例子,再加点自己的想法进去就做出来了。
正式操作
- 首先,加载一些必须的包
library(ggplot2)
library(dplyr)
library(viridis) # 使用viridis提供的翠绿色标度:scale_fill_viridis()
library(ggpointdensity) # 绘制密度散点图
2.生成绘图数据
dat <- bind_rows(
tibble(x = rnorm(7000, sd = 1),
y = rnorm(7000, sd = 10),
group = "foo"),
tibble(x = rnorm(3000, mean = 1, sd = .5),
y = rnorm(3000, mean = 7, sd = 5),
group = "bar"))
3.绘图
绘制密度散点图,最关键的参数就是geom_pointdensity
p1 <- ggplot(data = dat, mapping = aes(x = x,
y = y)) +
geom_pointdensity() + #密度散点图(geom_pointdensity)
scale_color_viridis() +
#geom_smooth(method = lm) + ##省略拟合曲线
stat_cor(method = "spearman") +
xlab("x") +
theme(axis.title.x = element_text(size = 16,
face = "bold",
vjust = 0.5,
hjust = 0.5))+
ylab("y") +
theme(axis.title.y = element_text(size = 16,
face = "bold",
vjust = 0.5,
hjust = 0.5))+
theme_bw()+
theme(panel.grid.major=element_line(colour=NA),
panel.background = element_rect(fill = "transparent",colour = NA),
plot.background = element_rect(fill = "transparent",colour = NA),
panel.grid.minor = element_blank(),
text=element_text(size=12, family="serif")) +
theme(legend.position='none') ##去除legend
-
结果
至此,基本结果就做出来了,后期再做点细微修改,就搞定了