以下是利用R语言自带的mtcars数据,用二维散点图叠加各自维度的密度图:
代码如下:
- library(tidyverse)
- # 画出左上的密度分布图
- g_top_left <- mtcars %>%
- ggplot(aes(x = mpg)) +
- geom_density(fill = "#177cb0") +
- theme_bw() +
- theme(panel.background = element_blank(),
- panel.border = element_blank(),
- axis.title = element_blank(),
- panel.grid.major = element_blank(),
- panel.grid.minor = element_blank(),
- axis.line.x = element_line(),
- axis.line.y = element_line()) +
- scale_x_continuous(expand = c(0.03, -0.4), limits = c(10, 35))
- # 画出右下的密度分布图
- g_bottom_right <- mtcars %>%
- ggplot(aes(x = wt)) +
- geom_density(fill = "#789262") +
- theme_bw() +
- theme(panel.background = element_blank(),
- panel.border = element_blank(),
- axis.title = element_blank(),
- panel.grid.major = element_blank(),
- panel.grid.minor = element_blank(),
- axis.line.x = element_line(),
- axis.line.y = element_line()) +
- coord_flip() +
- scale_x_continuous(expand = c(0, 0), limits = c(1.3, 5.8))
- # 画出左下的散点图
- g_bottom_left <- mtcars %>%
- ggplot(aes(x = mpg, y = wt)) +
- geom_point() +
- theme_bw()
- # 画出整体“画布”
- df <- data.frame(x = 1:10, y = 1:10)
- base <- ggplot(df, aes(x, y)) +
- geom_blank() +
- theme_bw() +
- theme(panel.background = element_blank(),
- panel.border = element_blank(),
- axis.text = element_blank(),
- axis.title = element_blank(),
- axis.ticks = element_blank(),
- axis.line = element_blank(),
- panel.grid.major = element_blank(),
- panel.grid.minor = element_blank())
- # 将小图在“画布”上组合
- base +
- annotation_custom(grob = ggplotGrob(g_bottom_left), xmin = 1, xmax = 8, ymin = 1, ymax = 8) +
- annotation_custom(grob = ggplotGrob(g_bottom_right), xmin = 8, xmax = 10, ymin = 1.3, ymax = 8.2) +
- annotation_custom(grob = ggplotGrob(g_top_left), xmin = 1, xmax = 8, ymin = 8, ymax = 10)