如何反转ggplot fill美学的默认调色板并解决连续值报错?
解决ggplot连续填充色的方向反转问题
错误原因:code_region是连续数值型变量,而scale_fill_hue()仅适用于离散分类变量,因此会触发「Continuous value supplied to discrete scale」的报错。
无需将code_region转为因子,可通过以下两种方法实现颜色刻度方向反转:
方法1:反转连续刻度的映射关系
使用scale_fill_continuous()并添加trans = "reverse"参数,直接反转数值与颜色的对应逻辑,保留默认调色板:
library(geobr) shape_br <- geobr::read_state() library(ggplot2) ggplot(shape_br)+ geom_sf(aes(fill = code_region))+ scale_fill_continuous(trans = "reverse")+ theme_test()
方法2:用支持方向参数的连续调色板
若想使用特定连续调色板(如ggplot2默认的viridis系列),调用对应连续版刻度函数并设置direction = -1:
ggplot(shape_br)+ geom_sf(aes(fill = code_region))+ scale_fill_viridis_c(direction = -1)+ theme_test()
注:
scale_fill_viridis_c()的direction = -1会直接反转调色板的渐变顺序,适合需要保留调色板风格的场景。
内容的提问来源于stack exchange,提问作者Monelisa
相关产品推荐
相关产品推荐

