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

如何绘制起点为0的水平直方图 复现R文本挖掘主题建模β对比图

R实现《Text Mining with R》图3.6的绘制方法

我们直接基于tidy生态工具链复现效果,步骤如下:

1. 数据预处理

首先从已拟合的LDA主题模型中提取β值,整理为每个词条对应两个主题β值的宽表,并计算差值:

library(tidyverse)
library(tidytext)

# 替换lda_model为你自己拟合完成的LDA模型对象
beta_wide <- tidy(lda_model, matrix = "beta") %>%
  pivot_wider(names_from = topic, values_from = beta, names_prefix = "topic_") %>%
  # 计算主题2与主题1的β差值
  mutate(beta_diff = topic_2 - topic_1)

2. 提取差值最大的子集

按差值正负分组,分别取绝对值最大的N个词条(示例取各10个,可自行调整):

top_diff_terms <- beta_wide %>%
  group_by(direction = beta_diff > 0) %>%
  slice_max(abs(beta_diff), n = 10) %>%
  ungroup() %>%
  # 按差值对词条排序,保证绘图顺序符合预期
  mutate(term = forcats::fct_reorder(term, beta_diff))

3. 绘制双向水平条形图

ggplot(top_diff_terms, aes(x = beta_diff, y = term, fill = direction)) +
  geom_col(show.legend = FALSE) +
  # 自定义颜色,负向(更偏向主题1)为红色,正向(更偏向主题2)为蓝色
  scale_fill_manual(values = c("#A50021", "#005792")) +
  labs(x = "β差值(主题2 - 主题1)", y = NULL) +
  # 添加0点参考虚线
  geom_vline(xintercept = 0, linetype = "dashed", color = "gray60") +
  theme_minimal()

效果说明

绘制出的图表会以0为中轴,左侧条形长度代表词条更偏向主题1的程度,右侧代表更偏向主题2的程度,和原书图3.6的呈现逻辑完全一致。如果需要调整展示的词条数量,只要修改slice_max中的n参数即可。

内容的提问来源于stack exchange,提问作者Anders Jørgensen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 12:36:03