首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >跟着Nature Communications学作图:R语言ggplot2气泡图组合水平柱形图完整示例

跟着Nature Communications学作图:R语言ggplot2气泡图组合水平柱形图完整示例

作者头像
用户7010445
发布2023-01-06 19:23:11
发布2023-01-06 19:23:11
9290
举报

论文

Pan-African genome demonstrates how population-specific genome graphs improve high-throughput sequencing data analysis

https://www.nature.com/articles/s41467-022-31724-3

本地pdf s41467-022-31724-3.pdf

论文中公布了大部分图的数据,但是没有公布对应的作图代码,没有关系,我们可以自己写代码试着模仿,今天的推文重复一下论文中的Figure 2D 的下半部分

image.png

首先是右侧的气泡图

部分示例数据截图

image.png

读取数据并作图代码

代码语言:javascript
复制
library(readxl)
dat01<-read_excel("data/20220806/fig2d.xlsx",
                  sheet = "Sheet1")

library(tidyverse)
library(stringr)


dat01 %>% 
  pivot_longer(-var) %>% 
  mutate(value=replace_na(value,"B")) -> new.dat01

library(ggplot2)

ggplot(data=new.dat01,aes(x=name,y=var))+
  geom_point(size=15,aes(color=value),
             show.legend = FALSE)+
  geom_segment(data=data.frame(x=7:11,
                               xend=7:11,
                               y=6,
                               yend=5:1),
               aes(x=x,y=y,xend=xend,yend=yend),
               color="#68c3a6",size=3)+
  scale_color_manual(values = c("A"="#68c3a6",
                                "B"="#d3d3d3"))+
  geom_rect(data = data.frame(xmin=0.5,
                              xmax=11.5,
                              ymin=c(0.5,2.5,4.5),
                              ymax=c(1.5,3.5,5.5)),
            aes(xmin=xmin,xmax=xmax,ymin=ymin,ymax=ymax),
            fill="#f6f6f6",
            alpha=0.5,
            inherit.aes = FALSE)+
  geom_point(data=new.dat01,aes(x=name,y=var,color=value),
             size=15,
             show.legend = FALSE)+
  geom_segment(data=data.frame(x=7:11,
                               xend=7:11,
                               y=6,
                               yend=5:1),
               aes(x=x,y=y,xend=xend,yend=yend),
               color="#68c3a6",size=3)+
  theme_void() -> p1

p1

image.png

这里遇到了一个问题是 想把条状的灰色背景放到最底层,正常是把作图函数写到最前面就可以了,但是因为添加条状背景是连续数据,气泡图是离散数据,写到前面会报错,写到后面就没有这个问题,暂时不知道什么原因。这里的解决办法是有叠加了一层气泡图和线段的函数

水平柱形图的代码

部分示例数据集截图

image.png

代码语言:javascript
复制
dat02<-read_excel("data/20220806/fig2d.xlsx",
                  sheet = "Sheet2")
dat02
ggplot(data=dat02,aes(x=var,y=value))+
  geom_hline(yintercept = 10,lty="dashed",
             color="#d3d3d3")+
  geom_col(fill="#68c3a6")+
  geom_text(aes(label=paste0(value,"M")),hjust=1)+
  coord_flip()+
  scale_y_reverse(expand=expansion(mult = c(0.4,0)),
                  breaks=c(0,10),
                  labels=c(0,"10M"))+
  scale_x_discrete(position = "top")+
  theme_classic()+
  theme(axis.line.y = element_blank(),
        axis.ticks.y = element_blank())+
  labs(x=NULL,y="Total size") -> p2

p2

image.png

最后是拼图代码

代码语言:javascript
复制
library(patchwork)
p2 + p1 +
  plot_layout(widths = c(1,3))

image.png

背景的浅色灰色条不知道如何跨越两个图,这里是出图后编辑图片实现的

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文
  • 首先是右侧的气泡图
  • 读取数据并作图代码
  • 水平柱形图的代码
  • 最后是拼图代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档