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
相关产品推荐
相关产品推荐

