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

如何用R绘制以数据框列为条形、基于adorn_totals总和的柱状图?

绘制基于列总和的柱状图解决方案

需求说明

需要绘制一幅柱状图,每个条形对应数据框中的一列,条形高度由janitor::adorn_totals()生成的列总和决定。

问题分析

你之前尝试的代码错误使用了geom_bar的..count..统计逻辑,这是用来计算每个数值的出现次数,而非提取列的总和;同时用lapply生成多幅图,不符合“单幅图展示所有列总和”的需求。

正确实现步骤

  1. 生成包含总和行的数据框;
  2. 提取总和行并转换为ggplot所需的长格式数据;
  3. 用geom_col直接绘制基于总和值的柱状图。

可复现代码

library(janitor)
library(ggplot2)
library(tidyr)

# 生成带总和行的数据框
df <- data.frame(
  a = c(1:5),
  b = c(1:5),
  c = c(1:5)
) %>% 
  adorn_totals(where = 'row')

# 提取最后一行的总和数据并转成长格式
total_data <- df %>%
  slice(n()) %>% # 选取总和行
  pivot_longer(cols = everything(), names_to = "列名", values_to = "总和")

# 绘制柱状图
ggplot(total_data, aes(x = 列名, y = 总和, fill = 列名)) +
  geom_col(show.legend = FALSE) +
  labs(title = "各列总和柱状图", x = "数据列", y = "总和值") +
  theme_minimal()

代码说明

  • adorn_totals(where = 'row'):在数据框末尾添加一行,计算每列的总和;
  • slice(n()):提取数据框的最后一行(即总和行);
  • pivot_longer:将宽格式数据转为长格式,适配ggplot的绘图逻辑;
  • geom_col:直接使用y轴的数值绘制条形,区别于geom_bar的统计计数功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:55:20