使用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
相关产品推荐
相关产品推荐

