R语言使用gt表格按行绘制直方图的报错问题咨询
解决方案
错误原因
text_transform()的fn参数作用域内无法直接通过.$plots提取原数据框的绘图列- 未设置
ggplot_image()的输出尺寸,也缺少ggplot2依赖包加载 - 额外创建空列再填充的逻辑冗余,可直接在绘图列原位渲染图片
可运行完整代码
# 加载全部依赖 library(dplyr) library(tidyr) library(purrr) library(gt) library(ggplot2) # 构造带绘图对象的汇总表 my_tibble <- iris %>% pivot_longer(-Species, names_to = "Vars", values_to = "Values") %>% group_by(Vars) %>% summarise( obs = n(), mean = round(mean(Values), 2), median = round(median(Values), 2), plots = list( ggplot(cur_data(), aes(Values)) + geom_histogram(bins = 8, fill = "#2c3e50", color = "white") + theme_void() # 移除多余坐标轴元素,适配表格展示 ) ) # 生成带直方图的gt表格 my_tibble %>% gt() %>% text_transform( locations = cells_body(columns = plots), fn = function(x) { map(my_tibble$plots, ~ ggplot_image(.x, height = px(30), width = px(120))) } ) %>% # 自定义列名 cols_label( Vars = "变量", obs = "观测数", mean = "均值", median = "中位数", plots = "分布直方图" )
补充说明
如果运行报错,先升级gt到最新正式版:
install.packages("gt")
如果需要调整直方图的样式、柱子数量、颜色等,直接修改summarise中ggplot部分的代码即可。
内容的提问来源于stack exchange,提问作者Alexis
相关产品推荐
相关产品推荐

