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

R Markdown knit时报错无法添加ggproto对象,求原因及解决方案

报错原因

你代码中第一个plot_usmap()行开头被加了#注释符,该行不会被执行。而后续的scale_fill_manual()、theme()、labs()等属于ggplot2的ggproto对象,必须依附在基础ggplot对象(此处plot_usmap()的返回值就是ggplot对象)后,通过+连接才能生效。没有基础ggplot对象的前提下,多个ggproto对象直接相加就会触发该报错。

修复方法

根据你的需求二选一即可:

  • 保留第一个选举政党分布绘图:删除plot_usmap(data = election, values = "party", color = "white") + 开头的#注释符,恢复完整的绘图代码
  • 不需要第一个绘图:将scale_fill_manual(values = party_colors) +到labs(fill = "Party")的所有行开头也加上#注释,避免无基础对象的ggproto代码被执行

修复后代码示例(不需要第一个绘图的场景)

library(usmap)

# Hex color codes for Democrat Blue and Republican Red
party_colors <- c("#2E74C0", "#CB454A") 

# 第一套绘图代码已全部注释,不会触发报错
# plot_usmap(data = election, values = "party", color = "white") + 
#            scale_fill_manual(values = party_colors) + 
#            theme(legend.position = "right") +
#            labs(title = "Winning Party for States") + labs(fill = "Party")


plot_usmap(data = election, values = "r_points", color = "black", exclude = c("DC")) + 
          scale_fill_gradient2(low = "blue4", 
                                high = "red4", breaks = c(-45, -30, -15, 0, 15, 30, 45)) +
          theme(legend.position = "right") +
          labs(title = "Winning Margins for Republican") + labs(fill = "Margin")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:24:05