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

如何简化R中两列均值可视化流程并使用ggplot绘制美观图表?

简化流程与ggplot美化方案

一、数据处理简化

你原来的步骤过于繁琐,直接用summarize计算均值,再转成ggplot偏好的长数据格式即可,无需生成整列重复的均值再提取:

library(dplyr)
library(tidyr)

# 计算两列均值并转换为长格式
avg_data <- my_data %>%
  summarize(
    part_1 = mean(part_1, na.rm = TRUE),
    part_2 = mean(part_2, na.rm = TRUE)
  ) %>%
  pivot_longer(
    cols = everything(),
    names_to = "Part",
    values_to = "Average"
  ) %>%
  mutate(Part = factor(Part, levels = c("part_1", "part_2"), labels = c("First part", "Second part")))

二、ggplot绘制美观柱状图

用geom_col实现核心绘图,同时添加标签、主题美化等元素:

library(ggplot2)

ggplot(avg_data, aes(x = Part, y = Average, fill = Part)) +
  geom_col(width = 0.6, show.legend = FALSE) +  # 调整柱子宽度,隐藏冗余图例
  geom_text(aes(label = round(Average, 2)), vjust = -0.5, size = 4) +  # 显示均值数值标签
  labs(
    title = "Mean Comparison: Part 1 vs Part 2",
    x = "Group",
    y = "Average Value"
  ) +
  theme_minimal() +  # 使用简洁清爽的主题
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    axis.title = element_text(size = 12),
    axis.text = element_text(size = 10)
  ) +
  scale_fill_brewer(palette = "Set2")  # 搭配专业配色

三、图表选择优化建议

单柱状图能清晰展示均值差异,但如果想更全面呈现数据特征,带误差棒的柱状图会更实用(比如补充标准差/标准误,体现数据离散程度),示例代码如下:

# 先计算均值+标准差
stats_data <- my_data %>%
  summarize(
    part_1_mean = mean(part_1, na.rm = TRUE),
    part_1_sd = sd(part_1, na.rm = TRUE),
    part_2_mean = mean(part_2, na.rm = TRUE),
    part_2_sd = sd(part_2, na.rm = TRUE)
  ) %>%
  pivot_longer(
    cols = everything(),
    names_to = c("Part", "Stat"),
    names_sep = "_",
    values_to = "Value"
  ) %>%
  pivot_wider(names_from = Stat, values_from = Value) %>%
  mutate(Part = factor(Part, levels = c("part_1", "part_2"), labels = c("First part", "Second part")))

# 绘制带误差棒的柱状图
ggplot(stats_data, aes(x = Part, y = mean, fill = Part)) +
  geom_col(width = 0.6, show.legend = FALSE) +
  geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd), width = 0.2) +  # 添加标准差误差棒
  geom_text(aes(label = round(mean, 2)), vjust = -0.8, size = 4) +
  labs(
    title = "Mean & Standard Deviation Comparison",
    x = "Group",
    y = "Value"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    axis.title = element_text(size = 12),
    axis.text = element_text(size = 10)
  ) +
  scale_fill_brewer(palette = "Set2")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:35:47