You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:39:01