data_df <- data.frame(Gene = rep(paste0('gene',1:10),4),
type= rep(c(rep("TSG",5),rep("OG",5)),4),
Cohort = c(rep("cohort1",10),rep("cohort2",10),
rep("cohort3",10),rep("cohort4",10)),
Percent = round(runif(40,0,80),0))
# data_df[1:3,]
#调整y轴基因的顺序
data_df$Gene<-factor(data_df$Gene,levels = rev(unique(data_df$Gene)))
library(ggplot2)
#画热图
ggplot(data_df,aes(x=Cohort,y=Gene,fill=ifelse(type=='TSG',Percent,ifelse(type=='OG',Percent*(-1),Percent+200)))) +
geom_tile(color="gray",size=0.5)+ #色块函数:color和size分别指定方块边线的颜色和粗细
coord_equal() + # 绘制正方形,长宽相等
scale_fill_gradientn(colours = c('red','white','blue','white','gray'),
limits=c(-100,300),
breaks=c(-100,0,100,200,300)) +
xlab("Cohorts") + # x轴名称
ylab("Genes") + # y轴名称
labs(title = "heatmap") + # 图名称
geom_text(aes(label=ifelse(Percent>0,Percent,'')),color='black') + # 0不显示
theme(
axis.text.x.bottom = element_text(size=12,angle = -45,
hjust = 0,vjust= 0.5),#x轴刻度文字大小
axis.text.y.left = element_text(size = 12), #y轴刻度文字大小
axis.ticks = element_blank(), #不显示坐标轴刻度
axis.title.x =element_text(size=15), # x轴title字体大小
axis.title.y=element_text(size=15), # y轴title字体大小
title = element_text(size=16), # title字体大小
panel.border = element_blank(), # 去掉外边框线
legend.position = 'none' # 去除legend
)
R语言geom_tile绘制热图
最新推荐文章于 2024-05-22 11:21:39 发布