" Heatbars"用于可视化连续缺失数据的日期?

时间:2015-09-28 22:11:25

标签: r ggplot2 time-series

我试图在每天抽样3年,5年和10年的范围内并排显示连续缺失数据的大块。希望使用ggplot2,因为我已经完成了一些美学功能。

我想象这可能来自一个条形图或者某些热图变化,但我不太确定如何将它们与时间序列数据一起使用。

我选择了一个黑/白条列表,因为我认为更容易观察(1)大量缺失数据的位置和(2)它们是否在不同的时刻发生(选择很重要) (3)相对容易观察到许多条形图,这些条形图对于时间序列更常规的线条图是不正确的。

这是我想到的草稿。 draft example

以下是5个电台的一些示例数据(实际上可能超过80个):

#Data from 5 different stations sampled daily. 
df <- cbind(seq(as.Date(("2010/01/01")),by="day",length.out=365*5),data.frame(matrix(rnorm(365*5*5),365*5,5)))
colnames(df) <- c("timestamp","st1","st2","st3","st4","st5")
#Add varying ranges of missing consecutive amount of days to observe result on visualization.
df[1:50,"st1"] <- NA # 50 
df[51:200,"st2"] <- NA # 150 
df[1:400,"st3"] <- NA # 400
df[501:1300,"st5"] <- NA # 800

1 个答案:

答案 0 :(得分:6)

这里粗略地刺了一下......根据自己的喜好改变尺度和主题元素......

library(ggplot2)
library(scales)
library(reshape2)
melt(df, id.vars = "timestamp") -> k
k$value <- ifelse(is.na(k$value), "NA", "Not NA")

ggplot(data = k) + 
    geom_point(aes(x = timestamp, y = variable, fill = value, colour = value), shape =22) +
    scale_x_date() +
    theme_bw() 

enter image description here