如何修改ggplot图例的breaks且不改动美学映射的其他属性
ggplot2修改图例breaks不覆盖原有标尺配置的方法
你的原写法失效的核心原因是:ggplot2规定同一个美学映射只能绑定一个标尺,后声明的
scale_colour_distiller会完全替换掉之前定义的标尺,未显式指定的参数都会回退为默认值,所以原来的调色板和图例名称都被重置了。
有两种常用方案可以规避这个问题:
方案1:通过guides修改图例断点(最便捷)
直接调整对应图例的展示参数,完全不会触碰原有标尺的调色板、名称等配置:
gg + guides(colour = guide_colourbar(breaks = c(2.5, 7.5)))
如果是离散型的图例,把guide_colourbar换成guide_legend即可。
方案2:更新原有标尺的参数
如果需要修改标尺本身的breaks属性而非仅调整图例展示,可以提取已有标尺修改后重新赋值,避免重复写参数:
# 提取已定义的colour标尺 col_scale <- gg$scales$get_scales("colour") # 修改breaks属性 col_scale$breaks <- c(2.5, 7.5) # 替换回原绘图对象的标尺列表 gg$scales$scales[[gg$scales$find("colour")]] <- col_scale # 输出修改后的绘图 gg
内容的提问来源于stack exchange,提问作者MattSainsbury-Dale
相关产品推荐
相关产品推荐

