如何随时间绘制二元变量1的出现频率?R语言热力图实现需求
绘制二元变量随时间的出现频率热力图
步骤1:计算各时间点的1出现频率
首先对数据按time分组,计算每个时间点上1的出现频率(0/1变量的均值即为1的占比):
library(dplyr) # 按time分组计算频率 freq_data <- dd %>% group_by(time) %>% summarise(positive_freq = mean(outcome, na.rm = TRUE))
步骤2:绘制热力图
使用ggplot2的geom_tile绘制热力图,用颜色深浅反映1的出现频率:
library(ggplot2) ggplot(freq_data, aes(x = time, y = 1, fill = positive_freq)) + # 绘制色块,白色边框区分每个时间点 geom_tile(color = "white") + # 使用viridis色系实现友好的颜色渐变 scale_fill_viridis_c(option = "plasma", name = "1的出现频率") + # 设置标签和标题 labs(x = "时间", y = "", title = "1随时间的出现频率热力图") + # 简洁主题,隐藏y轴无关元素 theme_minimal() + theme(axis.text.y = element_blank(), axis.ticks.y = element_blank())
可选:按时间区间汇总频率
如果时间序列较长,想查看时间段而非单个时间点的频率,可以先对time分箱再计算:
# 按每10个时间单位为一个区间分组 freq_data_bin <- dd %>% mutate(time_bin = cut(time, breaks = seq(0, max(time), by = 10), include.lowest = TRUE)) %>% group_by(time_bin) %>% summarise(positive_freq = mean(outcome, na.rm = TRUE)) # 绘制区间版热力图 ggplot(freq_data_bin, aes(x = time_bin, y = 1, fill = positive_freq)) + geom_tile(color = "white") + scale_fill_viridis_c(option = "plasma", name = "1的出现频率") + labs(x = "时间区间", y = "", title = "1随时间区间的出现频率热力图") + theme_minimal() + theme(axis.text.y = element_blank(), axis.ticks.y = element_blank())
内容的提问来源于stack exchange,提问作者cliu
相关产品推荐
相关产品推荐

