You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:45:33