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

基于两个共享Order列的数据集制作分组气泡图

分开展示两个数据集的气泡图实现方案

我拥有两个数据集,二者行完全一致,仅共享Order列,其余列均不相同。希望制作一张参考图样式的气泡图,将两个数据集分开展示,而非像现有代码那样用颜色区分各列。

数据集示例

data1

Order SFA14 SFB78 SFC88
W      W    15    88     4
X      X   100    15     4
Y      Y     8    10    10
Z      Z    12     0    15

data2

Order LA128 LBHY LCPP
W      W   100   10   17
X      X    10 1000  540
Y      Y     0   10   78
Z      Z    87  154  895

现有代码(按变量颜色区分)

# 基于共同的Order列合并数据集
combined_data <- merge(data1, data2, by = "Order", all = TRUE)

# 转换为长格式用于绘图
data_long <- combined_data %>%
  pivot_longer(cols = starts_with("SF") | starts_with("L"), names_to = "Variable", values_to = "Value")

# 创建气泡图,用不同颜色区分每个变量
ggplot(data_long, aes(x = Order, y = Value, size = Value, color = Variable)) +
  geom_point(alpha = 0.7) +
  scale_size_continuous(range = c(5, 20)) +
  labs(title = "合并气泡图示例", x = "分类群", y = "数值", size = "数值", color = "变量") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

现有代码生成的图表:所有变量的气泡集中在同一面板,通过颜色区分不同变量,无法直观区分两个数据集的整体差异。

期望效果:将两个数据集分别放在独立的子面板中,每个子面板展示对应数据集的所有变量气泡,便于对比两个数据集的分布。

解决方案代码

核心思路是给每个数据集添加标识列,合并后用分面(facet)功能将两个数据集分开绘制:

library(tidyverse)

# 给每个数据集添加标识列,并转换为长格式
data1_long <- data1 %>%
  mutate(Dataset = "data1") %>%
  pivot_longer(cols = -Order, names_to = "Variable", values_to = "Value")

data2_long <- data2 %>%
  mutate(Dataset = "data2") %>%
  pivot_longer(cols = -Order, names_to = "Variable", values_to = "Value")

# 合并两个长格式数据集
combined_long <- bind_rows(data1_long, data2_long)

# 绘制分面气泡图
ggplot(combined_long, aes(x = Order, y = Value, size = Value, color = Variable)) +
  geom_point(alpha = 0.7) +
  scale_size_continuous(range = c(5, 20)) +
  # 按数据集分面,每个数据集一个子图,Y轴刻度独立适配数据范围
  facet_wrap(~Dataset, scales = "free_y") +
  labs(title = "分数据集气泡图", x = "分类群", y = "数值", size = "数值", color = "变量") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

代码说明

  • 添加数据集标识:通过mutate(Dataset = "data1")给每个数据集打上标签,后续用于分面区分。
  • 长格式转换:pivot_longer(cols = -Order)将除Order外的列转为变量-数值对,适配ggplot的绘图逻辑。
  • 分面设置:facet_wrap(~Dataset, scales = "free_y")让两个子面板的Y轴刻度独立,避免因两个数据集数值范围差异大导致的展示失真。
  • 样式延续:保留了原代码中的气泡透明度、大小范围和坐标轴倾斜样式,保证图表可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:07:41