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

在R中为含缺失值的数据集绘制完整时间序列柱状图

解决方案

核心问题解答

要绘制完整时间轴的柱状图,必须先补全缺失的时间点并将对应pedestrian值设为NA——否则ggplot会直接跳过缺失的时间区间,无法呈现连续的时间轴。可以用imputeTS处理缺失值,结合ggplot2完成绘图,该方案同时适用于字符型日期和POSIXct类型日期。


一、处理字符型日期数据集

步骤1:加载依赖包

install.packages(c("tidyverse", "imputeTS", "lubridate"))
library(tidyverse)
library(imputeTS)
library(lubridate)

步骤2:转换日期格式并补全时间序列

# 将字符型date转为POSIXct格式
testfile$date <- ymd_hms(testfile$date)

# 生成覆盖全部时间范围的小时级连续时间序列
full_time_seq <- seq(min(testfile$date), max(testfile$date), by = "hour")
full_time_df <- tibble(date = full_time_seq)

# 左连接原始数据,缺失的pedestrian自动填充为NA
full_data <- full_time_df %>% 
  left_join(testfile, by = "date")

步骤3:(可选)用imputeTS填充缺失值

如果需要让时间序列连续展示(而非保留NA空缺),可以用插值方法填充:

# 线性插值填充NA
full_data$pedestrian <- na_interpolation(full_data$pedestrian)

# 也可选择移动平均等其他方法:na_ma(full_data$pedestrian, k = 2)

步骤4:用ggplot2绘制柱状图

ggplot(full_data, aes(x = date, y = pedestrian)) +
  geom_col(fill = "#2E8B57", alpha = 0.8) +
  scale_x_datetime(date_labels = "%m-%d %H", date_breaks = "6 hours") +
  labs(x = "时间", y = "行人数量", title = "小时级行人数量变化") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

二、处理POSIXct类型日期数据集

方案完全适用,且步骤更简洁(无需转换日期格式):

步骤1:补全时间序列

# 直接生成覆盖全部范围的小时级连续时间序列
full_time_seq <- seq(min(testfile$date), max(testfile$date), by = "hour")
full_time_df <- tibble(date = full_time_seq)

# 左连接补全NA
full_data <- full_time_df %>% 
  left_join(testfile, by = "date")

步骤2:(可选)填充缺失值

同字符型数据集的填充方法:

full_data$pedestrian <- na_interpolation(full_data$pedestrian)

步骤3:绘制柱状图

ggplot会自动识别POSIXct类型的时间轴,绘图代码与字符型数据集一致:

ggplot(full_data, aes(x = date, y = pedestrian)) +
  geom_col(fill = "#1E90FF", alpha = 0.8) +
  scale_x_datetime(date_labels = "%m-%d %H", date_breaks = "6 hours") +
  labs(x = "时间", y = "行人数量", title = "小时级行人数量变化(POSIXct)") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:01:03