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

R语言ggplot2绘制美国州级联邦税收影响地图问题求助

美国各州联邦税收影响地图绘制问题修复与优化

1. 报错根源与代码修复

你遇到的'from' doit être un nombre fini错误,核心原因是数据筛选逻辑完全错误:

  • 你用state == "alaska" & state == "hawaii" & state == "grand total",一个州不可能同时等于三个值,应该用|(或),但grand total是汇总行,根本不属于州地图数据,应该直接排除。
  • 之前的filter(fedtax_data3,is.na(long))是找出没有匹配到地图坐标的行,这些行(比如grand total)会导致绘图时没有有效坐标范围,触发报错。

修正后的完整代码:

# 加载所需包
library(maps)
library(mapproj)
library(tidyverse)

# 获取美国州地图数据并重命名匹配列
states <- map_data("state") %>% rename(state = region)

# 统一州名字母大小写,确保和地图数据匹配
fedtax_data2 <- fedtax_data2 %>% mutate(state = tolower(state))

# 合并数据并过滤无效行
fedtax_data3 <- fedtax_data2 %>%
  select(state, total_industry_impact) %>%
  left_join(states, by = "state") %>%
  # 排除没有地图坐标的无效行(比如grand total)
  drop_na(long, lat) %>%
  # 手动排除汇总行
  filter(!state == "grand total")

# 绘制地图
ggplot(fedtax_data3, aes(long, lat)) + 
  geom_polygon(aes(group = group, fill = total_industry_impact), color = "white") + # 添加白色边框区分各州
  theme_void() + # 一键隐藏所有轴元素,替代手动逐个设置
  ggtitle("Total Federal Tax Impact by State") +
  coord_map("albers", lat0 = 39, lat1 = 45) + # 使用阿尔伯斯投影,适配美国地图
  labs(fill = "Total Industry Impact") # 给填充色添加标题

2. 调整刻度实现各州对比

如果各州的total_industry_impact数值差距较大,可以通过以下方式优化刻度,提升对比效果:

  • 手动设置刻度区间:自定义断点并格式化数值:
    scale_fill_continuous(
      breaks = seq(0, max(fedtax_data3$total_industry_impact, na.rm = T), by = 1000000),
      labels = scales::dollar_format() # 转换为美元格式,可读性更强
    )
    
  • 对数刻度:适合数值跨度极大的场景,压缩差距:
    scale_fill_continuous(trans = "log10", labels = scales::dollar_format())
    
  • 分箱刻度:将数值分成离散区间,用阶梯色阶展示:
    scale_fill_binned(
      n.breaks = 5,
      labels = scales::dollar_format(),
      guide = guide_colorsteps(title = "Total Impact")
    )
    

将上述任意一种刻度调整代码添加到ggplot的图层末尾即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:55:15