前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >答读者问:如何用R语言ggplot2画抖动散点图加分组拟合线

答读者问:如何用R语言ggplot2画抖动散点图加分组拟合线

作者头像
用户7010445
发布2023-08-23 10:40:29
5660
发布2023-08-23 10:40:29
举报
文章被收录于专栏:小明的数据分析笔记本

有公众号读者问到下面的图怎么用R语言实现,今天的推文我们介绍一下如何用R语言的ggplot2实现下图

image.png

基本的形式就是抖动散点图再加上分组的拟合曲线,论文中具体用到的是什么数据我没有仔细看,这里我就用之前推文中的gwas数据来做演示

部分示例数据截图

image.png

每条染色体随机选了500个点,最后一列是给每个点一个分组

首先是抖动散点图

代码语言:javascript
复制
library(ggplot2)
dat<-read_delim("data/20230513/20230513.txt",
                col_names = TRUE,
                delim = "\t")

ggplot(data = dat,aes(x=CHR,y=P))+
  geom_jitter(aes(color=group),
              width = 0.2)

image.png

添加拟合曲线

代码语言:javascript
复制
ggplot()+
  geom_jitter(data = dat,
              aes(x=CHR,y=P,color=group),
              width = 0.2)+
  geom_smooth(data=dat,
              aes(x=CHR,y=P,
                  group=group,
                  color=group,
                  fill=group,
                  lty=group),
              method = "lm")+
  theme_bw()+
  theme(panel.grid = element_blank(),
        legend.position = "top",
        legend.background = element_rect(color="black"))+
  scale_y_continuous(expand = expansion(mult = c(0,0)))

image.png

如果像论文中那样有很多个图需要组合到一起,就借助patchwork这个R包

代码语言:javascript
复制
ggplot()+
  geom_jitter(data = dat,
              aes(x=CHR,y=P,color=group),
              width = 0.2)+
  geom_smooth(data=dat,
              aes(x=CHR,y=P,
                  group=group,
                  color=group,
                  fill=group,
                  lty=group),
              method = "lm")+
  theme_bw()+
  theme(panel.grid = element_blank(),
        legend.position = "top",
        legend.background = element_rect(color="black"))+
  scale_y_continuous(expand = expansion(mult = c(0,0))) -> p1

ggplot()+
  geom_jitter(data = dat,
              aes(x=CHR,y=P,color=group),
              width = 0.2)+
  geom_smooth(data=dat,
              aes(x=CHR,y=P,
                  group=group,
                  color=group,
                  fill=group,
                  lty=group),
              method = "lm")+
  theme_bw()+
  theme(panel.grid = element_blank(),
        legend.position = "top",
        legend.background = element_rect(color="black"))+
  scale_y_continuous(expand = expansion(mult = c(0,0))) +
  scale_fill_manual(values = c("#220050", "#b30059"))+
  scale_color_manual(values = c("#220050", "#b30059")) -> p2

library(patchwork)

p1+p2

image.png

推文记录的是自己的学习笔记,内容可能会存在错误,请大家批判着看,欢迎大家指出其中的错误

示例数据和代码可以给推文点赞,然后点击在看,最后留言获取

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先是抖动散点图
  • 添加拟合曲线
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档