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

如何反转ggplot2中连续填充图例的顺序?

解决连续渐变图例反转且保留配色方案的问题

你遇到的问题根源在于guide_legend()是为离散分类图例设计的,而连续渐变图例需要用guide_colorbar()来控制,这样既能反转顺序,又能保留连续的配色条样式。

修改后的完整代码如下:

library(ggplot2)

d <- structure(list(
  x = c(
    152.39, 152.36, 151.34, 151.37, 148.75,
    148.78, 146.54, 146.57, 144.87, 144.9, 143.01, 143.04, 141.45,
    141.48, 141.02, 141.05, 139.78, 139.81, 138, 138.03, 142.64,
    143.36
  ), y = c(
    -28.36, -28.33, -29.17, -29.17, -28.98, -28.98,
    -28.98, -28.98, -28.98, -28.98, -28.98, -28.98, -28.98, -28.98,
    -28.98, -28.98, -25.99, -25.99, -25.99, -25.99, -9.77, -9.71
  ),
  pred = c(
    119.27, 119.55, 208.66, 207.51, 359.44, 357.35,
    478.89, 477.27, 598.5, 596.25, 718.53, 716.68, 839.1, 836.84,
    875.38, 873.11, 1075.81, 1071.36, 1111.88, 1112.32, 1200.53,
    1284.32
  )
), row.names = c(NA, -22L), class = c(
  "tbl_df", "tbl",
  "data.frame"
))

ggplot() +
  geom_tile(
    data = d,
    aes(x = x, y = y, fill = (pred / 60))
  ) +
  scale_fill_gradientn(
    colours = c(
      "#FFFFCC", "#FFEDA0", "#FED976", "#FEB24C", "#FD8D3C", "#FC4E2A",
      "#E31A1C", "#B10026", "#5F004E"
    ),
    values = c(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.75, 1),
    breaks = seq(0, 20, 2),
    guide = guide_colorbar(reverse = TRUE)  # 改用针对连续图例的控制函数
  ) +
  labs(fill = "")

关键说明

  • guide_colorbar()是专门针对连续颜色渐变图例的控制工具,能完整保留原有的连续配色条形态。
  • 设置reverse = TRUE会将图例的数值顺序反转,实现从上到下数值递增的效果,匹配你的需求。

内容的提问来源于stack exchange,提问作者Rex Parsons

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:32:38