其他
跟着 Genome Research 学画图: 等高线散点图
你这么好看怎么不关注我
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群文件夹,欢迎下载。
群二维码:
老俊俊微信:
知识星球:
所以今天你学习了吗?
欢迎小伙伴留言评论!
今天的分享就到这里了,敬请期待下一篇!
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
往期回顾
◀clusterProfiler 的 shiny 版上线了!
◀听说你想把 spearman 和 pearson 展示在一张相关性热图里?
◀...