0

我正在尝试将 geom_tile 与 geom_point 结合起来,以显示基因表达敲低对心脏表型的影响,以及与对照相比,这种影响是增强还是减弱:

以下代码创建和示例。

g <- read_excel( path= file.path( WORKING_DIR, "heatmap.xlsx"))
g <- data.frame( fly_gene = g [, 1], g [, 2:65])
g <- g %>%mutate_all(as.character)

g1 <- melt(g, "fly_gene", c("EDD", "ESD", "FS", "HP", "DI" , "SI" ,"Relaxtime","Peaked_median", "Minimum.velocity", "Maximum.velocity","Mad_HP","Mad_DI", "Mad_SI","AI", "tt10r_MEDIAN", "MAD.tt10r", "CO", "SV", "retrograde_speed", "anterograde_percent", "anterograde_speed"))  
g2 <- melt(g, "fly_gene", c("sens_EDD", "sens_ESD", "sens_FS", "sens_HP" , "sens_DI", "sens_SI", "sens_Relaxtime", "sens_Peaked_median", "sens_minv","sens_maxv","sens_MAD_HP", "sens_MAD_DI", "sens_MAD_SI" ,"sens_AI","sens_tt10r", "sens_MAD_tt10r","sens_CO", "sens_SV", "sens_retrograde_speed", "sens_anterograde_percent", "sens_anterograde_speed" ))

g1 <- as.data.frame(unclass(g1)) g2 <- as.data.frame(unclass(g2)) 
g1$value=as.numeric(levels(g1$value))[g1$value]
g2$value=as.numeric(levels(g2$value))[g2$value]

g1$value = -log(g1$value)
g1$Significance_Level <- cut(g1$value,breaks = c(-0.09531018,0,2.995732,4.60517,5.298317,9.21034,Inf), label=c("NS", "NS", "", "", "","****"))
g2$sens <- cut(g2$value,breaks = c(0,1,10,Inf), label=c("Reduced_phenotypes","Enhanced_phenotypes", "Not_significant") ,right = FALSE)
g1$phenotype_sens <- g2$variable
g1$sens_value <- g2$value g1$sens <- g2$sens

plot1<- ggplot(g1, aes( variable,fly_gene )) + geom_tile(colour= "black", fill= "white", size = 0.1 ) + geom_point(aes(size = Significance_Level, colour = sens),shape = 16)+ scale_colour_manual(values = c("#649B88","#960018","NA"))+ coord_fixed()+ labs(y="",x="")+ labs() + theme_grey(base_size=7)+ theme(axis.ticks=element_line(),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),plot.background=element_blank(), panel.border=element_blank(),plot.title = element_text(color="black", size=13,hjust = 0),axis.text.x=element_text(angle=90, size = 11,hjust = 0.5, vjust = 1),axis.text.y=element_text(size = 12))
plot1

ggsave(plot1,filename="heatmap.png",height=5.5,width=8.8,units="in",dpi=200)

这就是我的数据的样子

数据集

我的问题是,如果我比较一组几个基因,这很有效,即点的大小和瓷砖的大小匹配。但是,如果我的数据集包含许多基因(在这种情况下为 40 个),与图块大小相比,这些点看起来太大了,有没有办法将点大小与图块大小相匹配?

我附上了一个我喜欢的情节的例子和一个点太大的例子

在此处输入图像描述

[在此处输入图像描述]

我会很感激任何想法。我是初学者,所以如果我的查询太基本,我很抱歉。

4

1 回答 1

0

您应该添加scale_size并调整到右侧range以适合您的瓷砖:

plot1<- ggplot(g1, aes( variable,fly_gene )) + geom_tile(colour= "black", fill= "white", size = 0.1 ) + geom_point(aes(size = Significance_Level, colour = sens),shape = 16)+ scale_colour_manual(values = c("#649B88","#960018","NA"))+ coord_fixed()+ labs(y="",x="")+ labs() + theme_grey(base_size=7)+ theme(axis.ticks=element_line(),panel.grid.major = element_blank(), panel.grid.minor = element_blank(),plot.background=element_blank(), panel.border=element_blank(),plot.title = element_text(color="black", size=13,hjust = 0),axis.text.x=element_text(angle=90, size = 11,hjust = 0.5, vjust = 1),axis.text.y=element_text(size = 12)) + 
        scale_size(range=c(1,2))
于 2021-06-11T11:39:32.587 回答