如何将quanteda的wordfish theta散点图转为ggplot并美化?
解决quanteda Wordfish theta值转ggplot散点图的fortify错误问题
第一步:从Wordfish模型提取数据并整理成数据框
你报错的核心原因是直接将双精度向量(即Wordfish模型的theta值)传入ggplot,而ggplot要求输入必须是数据框。先把theta值、语料库原始文档顺序、文档ID整理成结构化数据框:# 假设你的Wordfish模型对象名为wf_model,语料库对象为corp theta_df <- data.frame( doc_order = seq_along(wf_model$theta), # 生成与语料库原始顺序一致的x轴序号 theta = wf_model$theta, doc_id = docnames(corp) # 保留文档ID,用于后续高亮指定文档 )第二步:用ggplot绘制散点图并美化
基于整理好的数据框,即可自由实现自定义美化需求:library(ggplot2) # 基础散点图 p <- ggplot(theta_df, aes(x = doc_order, y = theta)) + geom_point(size = 2, color = "gray50") + # 默认点的样式 labs(x = "语料库原始文档顺序", y = "Wordfish Theta值", title = "文档立场分布散点图") + theme_minimal() # 高亮指定文档(示例:高亮doc_id为"target_doc_1"和"target_doc_2"的文档) target_docs <- c("target_doc_1", "target_doc_2") p <- p + geom_point(data = subset(theta_df, doc_id %in% target_docs), size = 4, color = "red", shape = 18) # 自定义高亮点的样式 # 显示图形 print(p)额外说明:
seq_along(wf_model$theta)确保x轴严格遵循语料库的原始文档排列顺序- 可通过调整
geom_point()的size、color、shape参数,自由修改点的样式 - 若需要更多美化(比如添加辅助线、调整主题元素),直接在ggplot的图层链中追加对应代码即可
内容的提问来源于stack exchange,提问作者Pablo1100
相关产品推荐
相关产品推荐

