微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 geom_point 大小与 geom_tile 大小匹配

如何解决将 geom_point 大小与 geom_tile 大小匹配

我正在尝试将 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,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,2.995732,4.60517,5.298317,9.21034,Inf),label=c("NS","NS","","****"))
g2$sens <- cut(g2$value,breaks = c(0,1,10,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)

这就是我的数据的样子

Dataset

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

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

enter image description here

[enter image description here]

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

解决方法

您应该添加 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))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。