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

ggplot2:删除geom_tile有线顶部和底部块

如何解决ggplot2:删除geom_tile有线顶部和底部块

我尝试使用geom_tile绘制矩阵。但是,我注意到在情节的顶部和底部出现了两个奇怪的块。我最初的猜测是这些是刻度元素。据我所知,我尝试指定主题参数,但是没有运气。

基本上,我想删除用红色箭头标记的两个有线块。除了白色块,左图是我想要的。正确的绘图是我在plot.background中调整了theme,以显示您不知道的东西占据了该区域。

Image here

我还附加了可以重现左图的最小代码

test2 <- matrix(runif(100*100),nrow = 100)
  
testdf <- test2 %>% reshape2::melt() 
testdf$Var2 <- factor(testdf$Var2,levels=(seq(max(testdf$Var2),1))) # you Could ignore this line

testdf %>% ggplot() + geom_tile(aes(x=Var2,y=Var1,fill=log2(value+1))) + 
  scale_fill_gradientn(colors = c("#ffffff","#f9c979","#ec8121","#b80217","#2f0006")) + 
  theme(axis.title = element_blank(),axis.text = element_blank(),axis.ticks = element_blank(),legend.title = element_blank(),panel.background = element_blank(),panel.border = element_rect(colour = "black",fill=NA,size=1),plot.background = element_blank()) +   coord_equal()

解决方法

这些块是ggplot2默认缩放比例的结果。要摆脱这些块,请通过scale_y_continuous将扩展设置为零:

library(ggplot2)
library(reshape2)

test2 <- matrix(runif(100*100),nrow = 100)

testdf <- reshape2::melt(test2) 
testdf$Var2 <- factor(testdf$Var2,levels=(seq(max(testdf$Var2),1))) # you could ignore this line

ggplot(testdf) + 
  geom_tile(aes(x=Var2,y=Var1,fill=log2(value+1))) + 
  scale_y_continuous(expand = c(0,0)) +
  scale_fill_gradientn(colors = c("#ffffff","#f9c979","#ec8121","#b80217","#2f0006")) + 
  theme(axis.title = element_blank(),axis.text = element_blank(),axis.ticks = element_blank(),legend.title = element_blank(),panel.background = element_blank(),panel.border = element_rect(colour = "black",fill=NA,size=1),plot.background = element_blank()) + coord_equal()

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