如何在ggplot2栅格图中反转图例色阶且保留scale_fill_viridis_d颜色分配
解决ggplot2栅格图图例色阶反转问题
要实现图例按温度从高到低排序且保持原有颜色分配,只需在scale_fill_viridis_d中添加图例反转设置,无需修改数据的因子水平或颜色映射:
修改后的绘图代码
p1 <- ggplot() + geom_raster(aes(x=x,y=y,fill=cuts), data=datene_stuc) + geom_sf(fill='transparent', data=conturu) + geom_sf(fill='transparent', data=locuru) + scale_fill_viridis_d( option = "B", name = 'Temp (Cº)', guide = guide_legend(reverse = TRUE) # 关键:反转图例顺序 ) + theme_minimal() + theme(axis.title.x=element_blank(), axis.title.y=element_blank()) + labs(title="Soil Temperature at 5cm depth", subtitle='January', caption='Fagro, 2022')
原理说明
guide_legend(reverse = TRUE)会直接反转图例的显示顺序,但不会改变每个因子水平(温度区间)对应的颜色,完全满足“温度范围从高到低排序,同时保留原有颜色分配”的需求。- 若需明确指定图例的breaks顺序(与反转后的顺序一致),也可采用以下写法,效果与上述代码一致:
scale_fill_viridis_d( option = "B", name = 'Temp (Cº)', breaks = rev(levels(datene_stuc$cuts)), guide = guide_legend(reverse = FALSE) )
内容的提问来源于stack exchange,提问作者Martín Francia
相关产品推荐
相关产品推荐

