查看原文
其他

跟着 Genome Research 学画图: 等高线散点图

JunJunLab 老俊俊的生信笔记 2022-08-15


你这么好看怎么不关注我

1引言

之前在一篇文献里看到一个比较有意思的散点图,文献名字为: Regulation of the ESC transcriptome by nuclear long noncoding RNAs, 发表在 Genome Research 上, 今天模仿一下这个图的画法:

本质上在基础散点图的基础上添加了等高线来表示数据分布的密度。这个图横坐标为 FPKM 值,纵坐标为 log2FC

2绘图

读取测试数据:

# 读取测试数据
da <- read.table('c:/Users/admin/Desktop/scatter.txt',header = T)

# 查看内容
head(da,3)
             gene_id         neg        pos gene_name    log2FC
1 ENSMUSG00000086324 15401.63297 2798.80831   Gm15564 -2.460195
2 ENSMUSG00000092341   308.10077 1653.56736    Malat1  2.424070
3 ENSMUSG00000075514    53.49866   11.21494   Gm13375 -2.253065

数据预处理:

# 宽转长
df <- melt(da,id.vars = c('gene_id','gene_name','log2FC'))

# 挑选5个标记基因
my_gene <- c('Malat1','Gm13375','Lncenc1','Zfas1')
mylable = df %>% filter(gene_name %in% my_gene)

绘图:

# 绘图
ggplot(df,aes(x = value,y = log2FC)) +
  # 点图层
  geom_point(color = '#2F86A6',alpha = 0.5,size = 2) +
  # 密度曲线图层
  geom_density2d(color = 'black',size = 1) +
  # x坐标取log10
  scale_x_continuous(labels = scales::label_number(),
                     n.breaks = 5,
                     trans = 'log10') +
  # 调整Y周范围
  scale_y_continuous(limits = c(-7,7),breaks = seq(-7,7,1.5)) +
  # 主题调整
  theme_grey(base_size = 18) + xlab("") +
  theme(strip.text = element_text(size = 18)) +
  # 添加基名
  geom_text_repel(data = mylable,aes(label = gene_name),size = 8,
                  nudge_x = 0.35,nudge_y = 2,
                  force = 250,
                  # 连线长度粗细
                  min.segment.length = unit(1,'cm'),segment.size = 0.75,
                  # 添加箭头
                  arrow = arrow(length = unit(0.015"npc"),
                                ends = "last", type = "open")) +
  # 分面
  facet_wrap(~variable,ncol = 2,scales = 'free_y')

搞定,具体想展示什么结果还得根据自己的数据具体分析。

测试数据已上传至 QQ 群文件夹。



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

群二维码:

老俊俊微信:


知识星球:



所以今天你学习了吗?

欢迎小伙伴留言评论!

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

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

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



 往期回顾 




基因 hclust 聚类并绘制聚类热图和表达趋势图

设置 wsl 子系统的使用线程和内存

使用 Mfuzz 包聚类分析并自定义绘图

clusterProfiler 的 shiny 版上线了!

听说你想把 spearman 和 pearson 展示在一张相关性热图里?

snakemake 进阶用法

听说你离成功还差个对象?

snakemake 初探

批量下载 starBase 数据库查询信息

MeRIP-seq 数据分析之 peak 热图可视化

◀...

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存