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

R语言qmplot绘制带双图例的阿拉巴马选举地图问题

解决阿拉巴马州2017参议院选举地图双图例问题

问题核心

现有代码可正确绘制县级着色地图,但添加双图例时出现两个问题:

  • Jones(蓝色区间)与Moore(红色区间)的颜色顺序反转
  • Moore的最高红色区间(80-90)缺失

关键修正思路

  1. 确保颜色向量与区间顺序严格匹配:浅色调对应低得票区间,深色调对应高得票区间
  2. 颜色向量长度必须与区间数量一致(5个区间对应5种颜色)
  3. 分别绘制两个独立图例,避免重叠

修正后的完整代码

# 加载依赖包
library(maptools)
library(RColorBrewer)

# 读取地图与选举数据
alabama <- readShapePoly("alabama_counties.shp")
election_data <- read.csv("alabama_senate_2017.csv")
alabama@data <- merge(alabama@data, election_data, by = "COUNTY")

# 定义得票率区间(5个区间)
bin_breaks <- c(40, 50, 60, 70, 80, 90)
bin_labels <- c("40-50", "50-60", "60-70", "70-80", "80-90")

# 生成候选人得票区间分组
alabama@data$jones_bin <- cut(alabama@data$JONES, 
                              breaks = bin_breaks, 
                              include.lowest = TRUE,
                              labels = bin_labels)
alabama@data$moore_bin <- cut(alabama@data$MOORE, 
                              breaks = bin_breaks, 
                              include.lowest = TRUE,
                              labels = bin_labels)

# 定义颜色:蓝色系对应Jones,红色系对应Moore(5种颜色,与区间数量匹配)
jones_colors <- brewer.pal(5, "Blues")
moore_colors <- brewer.pal(5, "Reds")

# 绘制正确着色的地图(以Jones得票率为例,若需Moore着色替换jones_colors为moore_colors)
plot(alabama, col = jones_colors[alabama@data$jones_bin], border = "white", main = "2017阿拉巴马州参议院选举结果")

# 添加修正后的双图例
# Jones图例(左下,蓝色从浅到深对应区间从小到大)
legend("bottomleft",
       legend = bin_labels,
       fill = jones_colors,
       title = "*Jones (Blue)*",
       cex = 0.8,
       bty = "n")

# Moore图例(右下,红色从浅到深对应区间从小到大)
legend("bottomright",
       legend = bin_labels,
       fill = moore_colors,
       title = "*Moore (Red)*",
       cex = 0.8,
       bty = "n")

修正点说明

  • 移除了原代码中的rev()函数,避免颜色顺序反转
  • 用brewer.pal(5, "Reds")生成完整的5种红色调,确保最高区间有对应颜色
  • 用bty = "n"去掉图例边框,优化视觉效果
  • 用cex = 0.8调整图例大小,防止两个图例重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:47:49