• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    alphafold2培训

    alphafold2培训

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      alphafold2培训

      alphafold2培训

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      老俊俊的生信笔记

      • 首页
      • 博客
      • 老俊俊的生信笔记
      • 跟着 Science 学画图:多层柱形图

      跟着 Science 学画图:多层柱形图

      • 发布者 weinfoadmin
      • 分类 老俊俊的生信笔记
      • 日期 2021年9月20日
      测试开头


      点击上方关注“公众号”

      跟着 Science 学画图:多层柱形图


      1、发生

      昨晚躺床上看到小明哥的推文:跟着 Science 学画图:R 语言 ggplot2 实现图中嵌图,跟着小明哥的代码即可复现出 Science 文章里的这篇图:

      跟着 Science 学画图:多层柱形图

      下面是明哥最终复现的图,可以看到基本上非常相似了,很棒:

      跟着 Science 学画图:多层柱形图

      然后明哥提出了如何绘制下面的 注释矩形图 这个问题,因为原文没有给代码 ,今天尝试了一下,是可以完成的。

      2、绘图

      我们先进行绘制堆积柱形图:

      # 设置工作目录
      setwd('c:/Users/admin/Desktop/')

      # 加载包
      library(dplyr)
      library(ggplot2)
      library(ggnewscale)
      library(ggsci)

      # 读取数据
      df <- read.delim("pan_matrix_stats.csv",row.names = 1,sep = ",")

      # 查看内容
      head(df,3)
                   class    Subgenome number_genome_presence     n
      1     Private Gene Non-Syntenic                      1 19576
      2        Core Gene Non-Syntenic                     26 10618
      3 Dispensable Gene Non-Syntenic                      2 10436

      绘制堆积图:

      # 绘制柱形堆积图
      p <- ggplot(df,aes(x = number_genome_presence)) +
        geom_bar(aes(fill = Subgenome,y = n),
                 position = "stack",
                 # 柱子宽度
                 width = 0.9,
                 stat = "identity") +
        # 控制颜色过渡,图例名称
        scale_fill_grey(start = 0.7,end = 0.2,name = 'Maize Subgenomes') +
        labs(x = 'Number of Genomes',y = 'Number of Pan-Genes') +
        # 经典主题
        theme_classic(base_size = 16) +
        # 图例位置
        theme(legend.position = 'top') +
        # y轴范围
        scale_y_continuous(limits = c(-1500,30000)) +
        # x轴显示刻度
        scale_x_continuous(breaks = seq(1:26))

      p
      跟着 Science 学画图:多层柱形图

      然后添加标签:

      # 添加标签

      # 构造标签数据
      df %>% group_by(number_genome_presence) %>%
        summarise(sum = sum(n)) %>% as.data.frame() -> text_data

      # 查看内容
      head(text_data,3)
        number_genome_presence   sum
      1                      1 19888
      2                      2 10614
      3                      3  6442

      # 添加
      p1 <- p + geom_text(data = text_data,
                          aes(x = number_genome_presence,y = sum + 100,label = sum),
                          # 标签角度及对齐
                          angle = 90,hjust = 0,vjust = 0.5,
                          size = 3)

      p1
      跟着 Science 学画图:多层柱形图

      接下来我们在柱形图下方添加 矩形注释 ,三种颜色 的注释。前面我们设置了每根 柱子的宽度是 0.9,而横坐标每个刻度对准了柱子的中间,所以可以计算出每根柱子的 起始位置 和 终止位置,这样就可以添加多个矩形注释了,下面是示意图:

      跟着 Science 学画图:多层柱形图
      # 构建矩形注释数据
      anno <- data.frame(number_genome_presence = 1:26,type = c(1,rep(2,22),rep(3,2),4))
      anno$xmin <- anno$number_genome_presence - 0.45
      anno$xmax <- anno$number_genome_presence + 0.45

      # 查看数据
      head(anno,3)
        number_genome_presence type xmin xmax
      1                      1    1 0.55 1.45
      2                      2    2 1.55 2.45
      3                      3    2 2.55 3.45

      # 添加注释
      p2 <- p1 + new_scale('fill') +
        geom_rect(data = anno,
                  aes(fill = factor(type),
                      xmin = xmin,
                      xmax = xmax,
                      ymin = -1500,ymax = -200),
                  show.legend = F) +
        # 修改颜色
        scale_fill_manual(values = c('#1EAE98','#00C1D4','#001E6C','#FF3F00'))

      p2
      跟着 Science 学画图:多层柱形图

      接下来绘制饼图:

      # 构造饼图数据
      pie <- data.frame(name = c("Core Gene", "Dispensable Gene","Private Gene","Near-Core Gene"),
                        per = c(27.09,49.59,19.30,4.02))

      # 按图中顺序排列
      pie$name <- factor(pie$name,levels = pie$name)

      # 绘制饼图
      pie_plot <- ggplot(pie,aes(x = '',y = per,fill = name)) +
        geom_bar(stat = 'identity',width = 1,show.legend = F) +
        coord_polar(theta = 'y') +
        theme_void() +
        scale_fill_npg()

      # 将饼图添加到堆叠柱形图里
      ppie <- ggplotGrob(pie_plot)

      pcombing <- p2 + annotation_custom(grob = ppie,
                             xmin = 5,
                             xmax = 22,
                             ymin = 12000,
                             ymax = 28000)

      pcombing
      跟着 Science 学画图:多层柱形图

      最后添加注释:

      # 给饼图添加注释
      pcombing +
        annotate("text", x = 8, y = 22000,
                 label = "Core Genes: 27.09%",size = 4) +
        annotate("text", x = 15, y = 28050,
                 label = "Near-Core Genes: 4.02%",size = 4) +
        annotate("text", x = 14, y = 17000,
                 label = "Dispensable Genes: 49.59%",size =4) +
        annotate("text", x = 17, y = 23000,
                 label = "Private Genes: 19.30%",size = 4)
      跟着 Science 学画图:多层柱形图

      当然也参考了明哥的一些代码。最后祝大家中秋快乐!

      3、今晚的药大夜空

      跟着 Science 学画图:多层柱形图


      跟着 Science 学画图:多层柱形图


      欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群 哦, 数据和代码已上传至 QQ群,欢迎加入下载。

      群二维码:

      跟着 Science 学画图:多层柱形图



      老俊俊微信:


      跟着 Science 学画图:多层柱形图



      知识星球:


      跟着 Science 学画图:多层柱形图


      所以今天你学习了吗?

      欢迎小伙伴留言评论!

      点击我留言!

      今天的分享就到这里了,敬请期待下一篇!

      最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!

      如果觉得对您帮助很大,赏杯快乐水喝喝吧!




       往期回顾 




      ◀CIRCexplorer3 使用介绍

      ◀芯片数据分析神器:GEO2R

      ◀CIRCexplorer3: 对 circRNA 进行相对定量

      ◀circRNA-seq:CIRCexplorer2 使用指南(二)

      ◀circRNA-seq:CIRCexplorer2 使用指南(一)

      ◀手把手教你用在线 pheatmap 绘制热图

      ◀IGV 导入本地基因组及注释文件

      ◀关于 scale 函数和 pheatmap 的图例问题

      ◀Circular RNAs 的生物发生、功能和挑战

      ◀@你需要提高一下 R 技能了(plyr 包)

      ◀…


      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      【万字长文】R语言入门学习路线与资源汇总
      2021年9月20日

      下一篇文章

      跟着 Microbiome 学画图:堆积柱形图的多层注释
      2021年9月22日

      你可能也喜欢

      8-1651542331
      跟着Nature学绘图(2) 箱线图-累积分布曲线图
      2 5月, 2022
      9-1651542322
      Julia 笔记之字符串
      2 5月, 2022
      0-1651542343
      Julia 笔记之数学运算和初等函数
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      白介素-17受体信号的自主激活,维持炎症并促进疾病进展
      048月2023
      MCT4依赖的乳酸分泌抑制LKB1缺陷肺腺癌的抗肿瘤免疫
      187月2023
      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?