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

R语言技术求助:议会图席位点无法按政党数据着色

问题:ggparliament绘制议会图席位无法按政党颜色渲染,始终显示黑色

问题根源

  • 填充色映射对象错误:直接将colors列映射给fill,但parliament_data生成的congress1数据框中,每个席位对应的政党信息存储在party列,应以此作为填充色的映射依据。
  • 变量名拼写错误:代码中定义的议会数据对象是congress1,但ggplot调用时写成了congreso1,属于笔误(若实际代码已修正可忽略,但该错误会导致报错)。
  • 颜色映射配置不匹配:scale_fill_manual的values和limits未与party列正确关联,导致颜色映射失效。

修正后的完整代码

library(ggplot2)
library(ggparliament)
library(dplyr)

# 定义政党、席位及对应颜色(确保颜色与政党一一对应)
parties <- c("PC","FRVS","PH","PEV","COM","CS")
seats <- c(10,2,3,2,6,7)
colors <- c("#38ebe8","#2979cf","#1f1f9c","#7022ab","#181644","#e01624")
datos <- data.frame(parties, seats, colors)

# 生成议会图数据
congress1 <- parliament_data(election_data = datos,
                             type = "semicircle",
                             parl_rows = 6,
                             party_seats = datos$seats)

# 绘制图形,基于party列映射填充色
cl <- ggplot(congress1, aes(x = x, y = y, fill = party)) +
  geom_parliament_seats(size=3.5) + 
  theme_ggparliament() +
  labs(fill = NULL, 
       title = "Parliament Seats") +
  scale_fill_manual(values = setNames(colors, parties)) # 绑定颜色与政党名称

cl

关键修正点解释

  • 切换填充色映射列:congress1每一行对应一个席位,party列标记席位所属政党,以此映射填充色才能实现同政党席位颜色统一。
  • 绑定颜色与政党名称:用setNames将颜色向量与政党名称绑定,确保scale_fill_manual能精准匹配每个政党的颜色。
  • 修正变量名拼写:保证parliament_data生成的对象与ggplot调用的对象名称一致,避免因名称错误导致的数据调用失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:12:40