R:视觉日期按类别划分

时间:2017-05-04 10:00:24

标签: r

我收集了以下数据集(实际数据集要大得多):

DATE;TIME;TAG
20.3.2017;0:01;HAR
20.3.2017;16:05;JKT
20.3.2017;16:26;RVA
20.3.2017;18:35;JKT
20.3.2017;19:43;JVA
20.3.2017;20:00;PER
20.3.2017;21:42;RVA
20.3.2017;22:05;HAR
20.3.2017;23:59;HAR

首先,我计算了实际时间戳,如下所示

dataset$timestamp <- with(dataset, ISOdatetime(substring(dataset$DATE, 1, 4),substring(dataset$DATE, 7, 7),substring(dataset$DATE, 9, 10),substring(dataset$TIME,1,regexpr(':', dataset$TIME)-1),substring(dataset$TIME,regexpr(':', dataset$TIME)+1,length(dataset$TIME)),0))

您可能会注意到在任何给定时刻只有一个标签处于活动状态。我想在下图中看到这一点。

考虑一个1440单位高(白天分钟)和28单位宽(我的数据集中的天数)的矩阵。根据TAG在该分钟内的活动情况,每个方块都有颜色。

有可能在R中执行此操作,还是需要使用其他可视化工具?

1 个答案:

答案 0 :(得分:0)

我假设您不是在询问如何将数据处理为适当的格式,而是如何生成图表。有几种可能性,例如使用ggplot2

#generate some toy data
toyDf <- data.frame(minute = sample(1440, 100, TRUE),
                    day = sample(28,100,TRUE),
                    tag = sample(c("foo","bar","baz"),100,TRUE))

#plot
library(ggplot2)
# specify data, x, and y:
ggplot(toyDf, aes(day,minute)) +
# specify plot type and fill colour levels:  
  geom_raster(aes(fill = tag),hjust=0, vjust=0) +
# specify where to draw minor gridlines:
  scale_x_continuous(minor_breaks = seq(1, 28, 1)) + 
  scale_y_continuous(minor_breaks = seq(1, 1440, 1)) +
#set plot aspect ratio (because it will be very high):
  theme(aspect.ratio=30/5,
#tweak some visual elements (gridlines, background):
        panel.grid.minor = element_line(colour="black", size=0.05),
        panel.background = element_blank())