利用ggplot绘制密度散点图(同时附带spearman的R和P值)

写在前面

今天在看一篇单细胞文章的时候,看到一个挺精致的图形,如下图所示:

密度散点图

我称之为“密度散点图”,因为它像我们平时看到的散点图类似,就是又加上了密度属性。

于是萌生了复现它的想法,随便找了个别人造好的轮子例子,再加点自己的想法进去就做出来了。

正式操作

  1. 首先,加载一些必须的包
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
  1. 结果
    至此,基本结果就做出来了,后期再做点细微修改,就搞定了


    结果

你可能感兴趣的:(利用ggplot绘制密度散点图(同时附带spearman的R和P值))