我一直在创建热力图,但几天来一直无法得到网格线的最终格式。请参见下面的代码和附加的图表。我正在尝试使用geom_tile()对齐热力图块的网格线,以便每个块填充网格的内部以盒状方式。我能够使用geom_raster()对齐网格线,但是y轴标签刻度要么位于瓷砖的顶部,要么位于底部,而我需要它在中心处打勾(见红色高亮),此外,我无法让geom_raster在瓷砖周围包裹白色线条边框,因此原始数据集中的色块看起来有些杂乱。非常感谢任何关于格式化代码的帮助。谢谢!
#The data set in long format
y<- c("A","A","A","A","B","B","B","B","B","C","C","C","D","D","D")
x<- c("2020-03-01","2020-03-15","2020-03-18","2020-03-18","2020-03-01","2020-03-01","2020-03-01","2020-03-01","2020-03-05","2020-03-06","2020-03-05","2020-03-05","2020-03-20","2020-03-20","2020-03-21")
v<-data.frame(y,x)
#approach 1 using geom_tile but gridline does not align with borders of the tiles
v%>%
count(y,x,drop=FALSE)%>%
arrange(n)%>%
ggplot(aes(x=x,y=fct_reorder(y,n,sum)))+
geom_tile(aes(fill=n),color="white", size=0.25)
我尝试过运行来自另一篇帖子类似的代码,但无法正确运行。我认为这是因为我的x变量是y变量的计数变量,因此无法格式化为因子变量以指定geom_rect()中的xmin和xmax。
#approach 2 using geom_raster but y-axis label can't tick at the center of tiles and there's no border around the tile to differentiate between tiles.
v%>%
count(y,x,drop=FALSE)%>%
arrange(n)%>%
ggplot()+
geom_raster(aes(x=x,y=fct_reorder(y,n,sum),fill=n),hjust=0,vjust=0)