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

R语言制作交互式美国薪资Choropleth地图技术求助

解决R语言制作美国薪资分级统计图的问题

我来帮你搞定这个美国薪资分级统计图的问题!先从你的数据和两种方法的问题说起:

第一步:先清理你的数据

你提供的stateDF里有两个影响地图生成的问题:

  • 阿拉斯加州(AK)有两条重复记录,同一个州不能对应多个中位数薪资值,咱们先对重复州的薪资取平均值
  • 出现了DL,应该是华盛顿特区(DC)的拼写错误,需要修正

先执行这段数据清理代码:

library(dplyr)

# 修正拼写错误
stateDF <- stateDF %>%
  mutate(State = ifelse(State == "DL", "DC", State))

# 对重复的州取中位数薪资的平均值
stateDF_clean <- stateDF %>%
  group_by(State) %>%
  summarise(Median = mean(Median, na.rm = TRUE)) %>%
  ungroup()

方法一:ggplot + plotly 实现交互式悬停地图

你的ggplot代码能画出基础地图,但没关联薪资数据也没悬停效果,咱们把数据关联起来,再转成交互式:

library(ggplot2)
library(plotly)
library(maps)

# 获取美国州地图数据,把州名转成缩写方便关联
states_map <- map_data("state") %>%
  mutate(State = state.abb[match(tolower(region), tolower(state.name))])

# 合并地图数据和清理后的薪资数据
map_data_merged <- left_join(states_map, stateDF_clean, by = "State")

# 绘制ggplot地图
p <- ggplot(map_data_merged, aes(x = long, y = lat, group = group)) +
  geom_polygon(aes(fill = Median), color = "white") +
  coord_fixed(1.3) +
  scale_fill_viridis_c(name = "中位数薪资", option = "magma", direction = -1) # 颜色越深薪资越高
  theme_void() # 一键去掉所有坐标轴元素,比你之前的多个theme设置更简洁

# 转成plotly交互式地图,添加悬停文本
ggplotly(p, tooltip = c("State", "Median")) %>%
  layout(geo = list(scope = "usa"))

这段代码的关键点:

  • 把地图数据的州名转换成缩写,和你的stateDF_clean关联
  • 用scale_fill_viridis_c设置颜色渐变,direction=-1实现颜色越深薪资越高
  • theme_void()替代你之前一堆的theme设置,更简洁
  • ggplotly转成交互式,tooltip指定悬停时显示的内容

方法二:纯plotly实现正确的分级统计图

你之前的plotly代码没出图,核心原因是数据有重复的州,用清理后的数据重新写:

library(plotly)

plot_ly(
  data = stateDF_clean,
  type = "choropleth",
  locations = ~State,
  locationmode = "USA-states",
  z = ~Median,
  colorscale = "Viridis",
  reversescale = TRUE, # 反转颜色,让薪资越高颜色越深
  text = ~paste("州名:", State, "<br>中位数薪资:", Median), # 自定义悬停文本
  colorbar = list(title = "中位数薪资")
) %>%
  layout(
    geo = list(scope = "usa"),
    title = "美国各州中位数薪资分级统计图"
  )

这段代码的关键点:

  • 使用清理后的无重复数据stateDF_clean
  • reversescale=TRUE实现颜色深浅和薪资高低对应
  • text参数自定义悬停时显示的内容,更清晰

现在运行这两种方法的代码,应该就能得到你想要的:基础美国地图、悬停显示州名和中位数薪资、颜色越深薪资越高的分级效果啦!

内容的提问来源于stack exchange,提问作者Ellie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:58:41