ggplot2如何将同一字段映射到size和color美学且仅保留一个图例
解决方案
你只需要保证color和size两个美学映射的标度参数完全一致,ggplot就会自动将两个图例合并为一个同时展示颜色和大小的合并图例,示例代码如下:
ggplot() + geom_sf(data = DPEst_DH, aes(color = di1a, size = di1a)) + # 自定义颜色标度,可根据需求替换为其他色阶函数 scale_color_gradient( name = "di1a", # 图例标题需和size标度完全相同 low = "lightblue", high = "orangered", limits = range(DPEst_DH$di1a, na.rm = TRUE), breaks = seq(min(DPEst_DH$di1a, na.rm = TRUE), max(DPEst_DH$di1a, na.rm = TRUE), length.out = 5) ) + # 大小标度的名称、取值范围、刻度必须和颜色标度完全一致 scale_size_continuous( name = "di1a", limits = range(DPEst_DH$di1a, na.rm = TRUE), breaks = seq(min(DPEst_DH$di1a, na.rm = TRUE), max(DPEst_DH$di1a, na.rm = TRUE), length.out = 5) )
如果不需要自定义刻度和取值范围,也可以直接通过guides函数统一指定两个映射的图例名称实现合并:
ggplot() + geom_sf(data = DPEst_DH, aes(color = di1a, size = di1a)) + guides(color = guide_legend("di1a"), size = guide_legend("di1a"))
内容的提问来源于stack exchange,提问作者3_catsmx
相关产品推荐
相关产品推荐

