如何使用ggplot按条件为美国各州地图设置填充颜色?
问题原因
- 代码中
color参数仅控制多边形边框颜色,所以当前只有边框实现了红绿配色 - 你在
aes()中指定了fill=Sales,相当于将填充色绑定到了连续型的销售额变量,ggplot默认的连续变量配色为蓝色系,这就是填充蓝色的来源
修正方案
先对数据按销售额是否高于均值做分类,再手动指定填充色即可,修正后代码如下:
library(ggplot2) library(tidyverse) library(mapdata) library(dplyr) MainStates <- map_data("state") State_Name <- c("alabama","arkansas","arizona","california","colorado") Sales <- c(100,200,250,275,310) df2 <- data.frame(State_Name,Sales) MergedStates <- inner_join(MainStates, df2, by = c("region" = "State_Name")) # 新增:计算销售额均值,生成分组标签 sales_avg <- mean(df2$Sales) MergedStates$sales_group <- ifelse(MergedStates$Sales <= sales_avg, "低于均值", "高于均值") p <- ggplot() + geom_polygon(data = MergedStates, aes(x=long, y=lat, group=group, fill = sales_group), color = ifelse(MergedStates$Sales <= sales_avg,"red","green"), size = 0.2) + # 手动指定填充色和分组的对应关系 scale_fill_manual(values = c("低于均值" = "red", "高于均值" = "green")) # 不需要图例的话可删除注释符启用下面这行 # + guides(fill = "none") p
内容的提问来源于stack exchange,提问作者Rob Rosene
相关产品推荐
相关产品推荐

