# 来源 https://www.r2omics.cn/
library(tidyverse) # 用于数据处理和可视化
library(ggTimeSeries) # 提供时间序列相关的可视化函数
library(RColorBrewer) # 提供调色板
# 读取数据文件
= read.delim("https://www.r2omics.cn//res/demodata/calendar/data2.txt") # 读取数据文件,假设数据以制表符分隔
df
# 数据处理:提取年份、月份和周数
= df %>%
df mutate(Year = as.integer(strftime(Date, '%Y'))) %>% # 提取年份
mutate(month = as.integer(strftime(Date, '%m'))) %>% # 提取月份
mutate(week = as.integer(strftime(Date, '%W'))) # 提取周数
# 计算每个月的平均周数,并生成月份标签
= df %>%
MonthLabels group_by(month) %>% # 按月份分组
summarise(meanWeek = mean(week)) %>% # 计算每个月的平均周数
mutate(month=month.abb[month]) %>% # 将月份数字转换为缩写(如Jan, Feb等)
data.frame() # 将结果转换为数据框
# 绘制日历热图
ggplot(data=df, aes(date=Date, fill=Value)) + # 设置日期和颜色填充映射
stat_calendar_heatmap() + # 绘制日历热图
scale_fill_gradientn(colours=rev(brewer.pal(11, 'Spectral')))+ # 设置渐变色填充
facet_wrap(~Year, ncol = 1, strip.position = "right") + # 按年份分面,纵向排列
scale_y_continuous(breaks=seq(7, 1, -1), labels=c("Mon","Tue","Wed","Thu","Fri","Sat","Sun")) + # 设置Y轴为星期天到星期一
scale_x_continuous(breaks = MonthLabels[,"meanWeek"], labels = MonthLabels[, "month"], expand = c(0, 0)) + # 设置X轴标签为每月的平均周数
labs(x="", y="") + # 去除X和Y轴标签
theme(panel.background = element_blank()) # 去除背景
R语言绘制日历热图
前言
本篇是R语言ggTimeSeries包绘制日历热图的教程。
什么是日历热图?
日历热图是一种用于展示数据的可视化图表,它以日历的形式呈现一段时间内的数据分布情况,通常以颜色的深浅或不同的颜色代表不同的数据值或频率。日历热图能帮助用户快速识别时间序列数据中的模式、趋势和异常值,尤其是在日、周或月的粒度下进行数据展示时。
主要特点:
直观性:通过不同的颜色或色块填充日期,使得数据的高低一目了然。
时间维度:通常会以年份、月份和日期为单位,展示时间维度的连续数据。
应用场景:
网站分析:展示某网站每天的访问量或用户行为数据。
健康追踪:比如展示每天的步数、卡路里消耗等。
金融数据:比如展示股票的每日涨跌幅度等。
绘图所需数据
包含两列数据,第一列是年月日日期,第二列是数值。
demo数据可以在这里下载https://www.r2omics.cn//res/demodata/calendar/data.txt