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

如何仅用ggplot2复现plotly绘制的R树形图?

仅用ggplot2复现树形图的方案

没问题!虽然ggplot2本身没有内置的树形图(treemap)几何对象,但我们可以借助基于ggplot2的扩展包treemapify来实现——如果你的离线电脑已经安装了这个包的话,这是最贴合ggplot2语法、最便捷的方案。下面是具体步骤:

第一步:处理数据类型

你的dtd7数据框里,n列是因子(factor)类型,而树形图需要用数值来计算区块面积,所以首先要把它转换成数值型:

dtd7$n <- as.numeric(as.character(dtd7$n))

第二步:用ggplot2+treemapify绘制树形图

加载必要的包后,就可以用熟悉的ggplot语法来构建树形图了:

library(ggplot2)
library(treemapify)

# 绘制静态树形图
p <- ggplot(dtd7, aes(area = n, fill = topic, label = topic)) +
  # 生成树形图区块
  geom_treemap() +
  # 在区块中心添加标签
  geom_treemap_text(colour = "white", place = "centre", size = 10) +
  # 添加标题
  labs(title = "Ingredient Count Treemap") +
  # 调整图例位置
  theme(legend.position = "right")

# 查看图形
print(p)

可选:实现类似Plotly的hover交互效果

如果需要像原Plotly图那样的hover提示功能,静态ggplot图做不到,但如果你的电脑安装了ggiraph包,可以把图转成交互式版本:

library(ggiraph)

# 创建交互式树形图
p_interactive <- ggplot(dtd7, aes(
  area = n, 
  fill = topic, 
  label = topic,
  # 设置hover提示内容
  tooltip = paste("Ingredient:", topic, "<br>Count:", n)
)) +
  geom_treemap_interactive() +
  geom_treemap_text_interactive(colour = "white", place = "centre", size = 10) +
  labs(title = "Ingredient Count Treemap") +
  theme(legend.position = "right")

# 渲染并查看交互式图形
ggiraph(code = print(p_interactive))

注意事项

  • 如果你还没安装treemapify或ggiraph,因为电脑离线无法联网安装的话,可能需要提前通过其他有网络的电脑下载对应包的离线安装文件,再导入到工作电脑中安装。
  • 这个方案的树形图区块面积逻辑和你用Plotly实现的完全一致,都是基于n列的数值大小分配空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:31:09