使用scale_fill_gradient2()绘制地图时配色不符问题求助
解决ggplot2中scale_fill_gradient2()颜色显示异常的问题
问题原因
你遇到的颜色显示错误,核心是参数使用错误:scale_fill_gradient2()中,mid是用来设置中间位置的颜色,而指定渐变中间数值阈值的参数是midpoint。你错误地把中间数值10.8传给了mid参数,ggplot会把这个数值当作颜色代码解析,导致颜色映射逻辑混乱,最终出现不符合预期的红色。
另外,代码中缺少states数据集的加载步骤,这也会导致后续的left_join操作失败,间接影响地图渲染。
修正后的代码
library(tidyverse) library(maps) library(ggmap) # 加载states数据集(替换为你的实际文件路径或读取方式) states <- read.csv("states_map.csv") state_map <- map_data("state") %>% left_join(states, by = "region") state_map %>% ggplot(aes(long, lat, group = group)) + geom_polygon(aes(fill = water_land), color = "white") + # 添加白色边界区分州 scale_fill_gradient2( low = "#BC9354", high = "#243292", midpoint = 10.8, # 正确指定渐变中间数值阈值 mid = "#FFFFFF" # 可选:设置中间位置的颜色,不需要可省略 ) + theme_void() + # 更适合地图的主题,移除多余元素 theme(legend.position = "none")
关键修正点
- 参数修正:将
mid = 10.8改为midpoint = 10.8,明确指定颜色渐变的中间数值节点。 - 数据集加载:补充
states数据集的读取步骤,确保left_join能正常关联数据。 - 优化地图显示:添加
color = "white"给多边形加边界,使用theme_void()简化地图主题,提升可读性。
内容的提问来源于stack exchange,提问作者Ali Osman
相关产品推荐
相关产品推荐

