用excel将plantcare的结果转成矩阵了。参考链接:Plantcare_启动子预测结果_快速筛选指定基因启动子上的顺式作用元件个数_坐大巴车晕车啊的博客-CSDN博客
接下来用R包ggplot2画热图就好了。
参考链接:
R语言中ggplot2绘制热图,美化热图流程 - 知乎
R语言ggplot2画带有空白格的热图简单小例子-腾讯云开发者社区-腾讯云 (tencent.com)
跟着Nature microbiology学作图:R语言ggplot2热图展示离散数据 - 知乎
#加载不用说了
library(ggplot2)
library(reshape2)
#提取某几列的包
library(dplyr)
#check.names=FALSE防止将列名-变成.
data<- read.csv("plantCARE矩阵图.csv",header=TRUE,row.names=1, check.names=FALSE)
#因为使用的excel语言没有呈现0值所以将NA换成0
data[is.na(data)]=0
data
light <-select(data,'ACA-motif','AE-box','Box II','CAG-motif','DRE','GA-motif','Gap-box')
light
> light
ACA-motif AE-box Box II CAG-motif DRE GA-motif Gap-box
001 0 0 0 0 0 0 1
002 0 0 0 0 0 0 0
003 0 1 0 0 0 1 0
#将宽数据类型转为长数据类型
light$id <- rownames(light) #新建一列(ID),内容为数据的行名
light_m <- melt(light,id.vars=c("id")) #将原来的数据转化成长数据格式,并以ID列为主因素
head(light_m,5) #查看转换后的结果,该数据将用于后续的流程
> head(light_m,5)
id variable value
1 001 ACA-motif 0
2 002 ACA-motif 0
3 003 ACA-motif 0
4 004 ACA-motif 0
5 005 ACA-motif 0
开始画图
p <- ggplot(light_m,aes(x=variable,y=id))+ #初始化,读入数据,设置x轴和y轴
geom_tile(aes(fill=value),color="black")+ #加网格线
scale_fill_gradient(low = "white", high = "red")+#设置填充颜色
geom_text(aes(label=value))+#设置填充项为value值,在每一格中添加数字
theme(panel.background = element_blank())+
#将X轴放到上面
scale_x_discrete(position = "top")+
theme(panel.background = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text.x.top = element_text(angle = 90,
hjust = 0,
vjust= 0.5),
plot.title = element_text(hjust=0.5),
legend.position = "none")+
labs(title = "Light response")
p
结果就类似这种(网图)
#前面用同样的方式画出别的然后合并在一起
p+p1+
plot_layout(guides = "collect")+
# 设置为左边占7份,右边占1份平分宽度,可以调整两张图之间的水平间隔
plot_layout(ncol = 2, widths = c(7, 1)) +
#设置图例在下方,不过我的不打算设置图例
plot_annotation(theme = theme(legend.position = "bottom",
legend.box = "vertical"))
就一拼接缝合怪,大佬都在链接里。学习记录。