您的位置:首页 > 其它

ggpointdensity:R绘制密度散点图

2020-06-30 11:22 78 查看

绘制散点图时,若散点数目很多,散点之间相互重叠,则不易观察散点趋势,此时可绘制密度散点图解决

导入包

library(ggplot2)
library(dplyr)
library(viridis) # 使用viridis提供的翠绿色标度:scale_fill_viridis()
library(ggpointdensity) # 绘制密度散点图
library(cowplot) # 图形组合,可以自动对其坐标轴

生成绘图数据

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"))

绘图

# 散点图
p1 <- ggplot(data = dat, mapping = aes(x = x, y = y)) +
geom_point() +
labs(tag = "A") + # 添加子图标记
theme_classic()

# 散点图+密度线(geom_density2d)
p2 <- ggplot(data = dat, mapping = aes(x = x, y = y)) +
geom_point() +
geom_density2d(size = 1) +
labs(tag = "B") +
theme_classic()

# 封箱散点图(geom_bin2d)
p3 <- ggplot(data = dat, mapping = aes(x = x, y = y)) +
geom_bin2d(bins = 60) + # bins控制着图中每个箱子的大小
scale_fill_viridis() +
labs(tag = "C") +
theme_classic()

# 密度散点图(geom_pointdensity)
p4 <- ggplot(data = dat, mapping = aes(x = x, y = y)) +
geom_pointdensity() +
scale_color_viridis() +
labs(tag = "D") +
theme_classic()

# 组合4幅图形
plot_grid(p1, p2, p3, p4, nrow = 2)

4幅图比较

  • geom_point
    为ggplot2自带的绘图函数;A图各位置点的数量观察不清
  • geom_density2d
    为ggplot2自带的绘图函数,可以绘制密度等高线(图B)
  • geom_bin2d
    为ggplot2自带的绘图函数;先将散点封箱处理,然后绘制出箱子,箱子的颜色取决于箱子内散点的数量(图C)
  • geom_pointdensity
    为ggpointdensity包的函数;各散点的颜色取决于改点周围临近点的数量(图D)
  • 图C与图D效果类似,但图C的箱子已不再是真实的散点,而图D为真实的散点;比较图C、图D与原始图A的散点稀疏区域便可发现

geom_pointdensity

  • geom_pointdensity的详细用法可参阅文档

  • adjust参数:控制着判定两个点为临近点时所使用的阈值,该值越大则越光滑

p5 <- ggplot(data = dat, mapping = aes(x = x, y = y)) +
geom_pointdensity(adjust = .1) +
scale_color_viridis() +
labs(tag = "A", title = "adjust = 0.1") +
theme_classic()

p6 <- ggplot(data = dat, mapping = aes(x = x, y = y)) +
geom_pointdensity(adjust = 4) +
scale_color_viridis() +
labs(tag = "B", title = "adjust = 4") +
theme_classic()

plot_grid(p5, p6, nrow = 1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: