如何反转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
相关产品推荐
相关产品推荐

