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

