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

如何将两个数据框的V1变量结果绘制为并排条形图?

这问题我之前处理类似需求时也琢磨过!要把两个不同调查的同变量结果放在同一个图里并排展示,核心思路是先把两个数据框合并,加上一个能区分调查来源的标识列,然后用ggplot来实现可视化,我给你两种常用的方案:

第一步:合并数据并添加分组标识

不管用哪种绘图方式,先把数据整合到一起是关键。我们可以给每个数据框加一个Survey列,标记它来自DF1还是DF2,再合并成一个数据框:

用基础R实现:

# 给DF1添加标识列,只保留绘图需要的列
DF1$Survey <- "Survey 1"
DF1 <- DF1[, c("V1", "Survey")]

# 给DF2做同样操作
DF2$Survey <- "Survey 2"
DF2 <- DF2[, c("V1", "Survey")]

# 合并数据框
combined_df <- rbind(DF1, DF2)

用dplyr更简洁实现:

如果你习惯用tidyverse工具,一行就能搞定合并加标识:

library(dplyr)
combined_df <- bind_rows(DF1 = DF1, DF2 = DF2, .id = "Survey")
# .id参数会自动生成名为Survey的列,值就是你传入的DF1/DF2

第二步:两种可视化方案

方案1:分面子图(并排独立展示)

适合想清晰看到每个调查的整体分布时用,每个调查占一个子图,横向并排:

library(ggplot2)
ggplot(combined_df, aes(x = V1)) +
  geom_bar(fill = "#4285F4") + # 自定义填充色
  facet_wrap(~ Survey, ncol = 2) + # 设置为2列并排展示
  theme(axis.text.x = element_text(angle = 90, hjust = 1),
        text = element_text(size = 10)) +
  labs(x = "选项", y = "人数") # 可根据需求修改标签文字

方案2:同一图内并排柱状图

如果想直接对比每个选项在两个调查中的数量差异,就用这种方式,把两个调查的柱子并排:

ggplot(combined_df, aes(x = V1, fill = Survey)) +
  geom_bar(position = position_dodge(width = 0.8), alpha = 0.8) +
  # position_dodge控制柱子并排的间距,alpha调整透明度
  theme(axis.text.x = element_text(angle = 90, hjust = 1),
        text = element_text(size = 10)) +
  labs(x = "选项", y = "人数", fill = "调查来源")

你可以根据自己的需求选其中一种,两种方法都能完美实现你要的“单个图中并排展示”的效果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:22:42