楼主: cheetahfly
4170 2

[学习分享] ggplot2多图组合一例 [推广有奖]

  • 2关注
  • 71粉丝

版主

院士

5%

还不是VIP/贵宾

-

威望
0
论坛币
58587 个
通用积分
1406.4471
学术水平
480 点
热心指数
587 点
信用等级
328 点
经验
126326 点
帖子
2063
精华
1
在线时间
3767 小时
注册时间
2010-10-27
最后登录
2024-4-22

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
最近无意中看到ggplot2包中自带的多图组合功能,练手了一张图,特此抛砖引玉,与大家分享讨论。
以下是利用R语言自带的mtcars数据,用二维散点图叠加各自维度的密度图:
多图.png

代码如下:
  1. library(tidyverse)
  2. # 画出左上的密度分布图
  3. g_top_left <- mtcars %>%
  4.   ggplot(aes(x = mpg)) +
  5.   geom_density(fill = "#177cb0") +
  6.   theme_bw() +
  7.   theme(panel.background = element_blank(),
  8.         panel.border = element_blank(),
  9.         axis.title = element_blank(),
  10.         panel.grid.major = element_blank(),
  11.         panel.grid.minor = element_blank(),
  12.         axis.line.x = element_line(),
  13.         axis.line.y = element_line()) +
  14.   scale_x_continuous(expand = c(0.03, -0.4), limits = c(10, 35))

  15. # 画出右下的密度分布图
  16. g_bottom_right <- mtcars %>%
  17.   ggplot(aes(x = wt)) +
  18.   geom_density(fill = "#789262") +
  19.   theme_bw() +
  20.   theme(panel.background = element_blank(),
  21.         panel.border = element_blank(),
  22.         axis.title = element_blank(),
  23.         panel.grid.major = element_blank(),
  24.         panel.grid.minor = element_blank(),
  25.         axis.line.x = element_line(),
  26.         axis.line.y = element_line()) +
  27.   coord_flip() +
  28.   scale_x_continuous(expand = c(0, 0), limits = c(1.3, 5.8))

  29. # 画出左下的散点图
  30. g_bottom_left <- mtcars %>%
  31.   ggplot(aes(x = mpg, y = wt)) +
  32.   geom_point() +
  33.   theme_bw()

  34. # 画出整体“画布”
  35. df <- data.frame(x = 1:10, y = 1:10)
  36. base <- ggplot(df, aes(x, y)) +
  37.   geom_blank() +
  38.   theme_bw() +
  39.   theme(panel.background = element_blank(),
  40.         panel.border = element_blank(),
  41.         axis.text = element_blank(),
  42.         axis.title = element_blank(),
  43.         axis.ticks = element_blank(),
  44.         axis.line = element_blank(),
  45.         panel.grid.major = element_blank(),
  46.         panel.grid.minor = element_blank())

  47. # 将小图在“画布”上组合
  48. base +
  49.   annotation_custom(grob = ggplotGrob(g_bottom_left), xmin = 1, xmax = 8, ymin = 1, ymax = 8) +
  50.   annotation_custom(grob = ggplotGrob(g_bottom_right), xmin = 8, xmax = 10, ymin = 1.3, ymax = 8.2) +
  51.   annotation_custom(grob = ggplotGrob(g_top_left), xmin = 1, xmax = 8, ymin = 8, ymax = 10)
复制代码




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ggplot2 gplot plot GPL Continuous

已有 1 人评分论坛币 收起 理由
llb_321 + 5 精彩帖子

总评分: 论坛币 + 5   查看全部评分

本帖被以下文库推荐

沙发
tmdxyz 发表于 2017-12-19 04:25:41 |只看作者 |坛友微信交流群
不错,学习一下。

使用道具

藤椅
narcissism0923 发表于 2017-12-19 11:46:15 |只看作者 |坛友微信交流群
很好,学习学习!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-23 22:31