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

使用dplyr按多条件汇总卫星数据以绘制气泡图

卫星发射数据分组统计与气泡图实现方案

1. 数据处理步骤(dplyr实现)

用dplyr结合lubridate完成双重分组统计,先划分海拔100km区间,再按月汇总发射数量:

# 加载依赖包
library(dplyr)
library(lubridate)
library(ggplot2)

# 数据预处理与分组统计
sat_data_processed <- sat_data %>%
  # 过滤海拔缺失值(按需调整)
  filter(!is.na(ALTITUDE)) %>%
  # 将发射日期统一转为当月第一天,实现按月分组
  mutate(launch_month = floor_date(LAUNCH_DATE, unit = "month")) %>%
  # 生成100km间隔的海拔区间标签(如"0-99km")
  mutate(altitude_bin = paste0(
    floor(ALTITUDE / 100) * 100, 
    "-", 
    floor(ALTITUDE / 100) * 100 + 99, 
    "km"
  )) %>%
  # 按"月份+海拔区间"双重分组
  group_by(launch_month, altitude_bin) %>%
  # 统计每组的卫星发射数量
  summarise(launch_count = n(), .groups = "drop")

2. 气泡图可视化实现

用ggplot2生成符合需求的气泡图,X轴为月份,Y轴为海拔区间,气泡大小对应发射数量:

ggplot(sat_data_processed, aes(x = launch_month, y = altitude_bin, size = launch_count)) +
  # 设置气泡样式,添加透明度避免重叠遮挡
  geom_point(color = "steelblue", alpha = 0.7) +
  # 控制气泡大小范围,防止极端值影响可读性
  scale_size(range = c(2, 10), name = "发射数量") +
  # 格式化X轴日期为"年-月",设置每月一个刻度
  scale_x_date(date_labels = "%Y-%m", date_breaks = "1 month") +
  # 设置图表标签与轻量化主题
  labs(
    x = "发射月份", 
    y = "海拔区间", 
    title = "各月份不同海拔区间卫星发射数量分布"
  ) +
  theme_minimal() +
  # 旋转X轴标签,避免文字重叠
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

关键细节说明

  • 海拔区间划分:如果不需要文字标签,可直接保留floor(ALTITUDE/100)*100作为区间代表值(如0、100、200),后续在可视化时通过scale_y_continuous设置Y轴标签即可。
  • 日期处理:floor_date确保当月所有发射日期统一归为当月第一天,保证按月分组的准确性。
  • 缺失值处理:若数据存在ALTITUDE或LAUNCH_DATE缺失,务必先过滤,避免统计结果出现偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:30:41