R中的颜色编码时间线图

Color-coded timeline plot in R

我正在研究可视化移动应用程序中的用户触摸交互。我想将它们绘制在按动作类型进行颜色编码的一维时间轴中。

即,我的两个变量是时间(以毫秒为单位,在 x 轴上)和触摸类型(用于对线条进行颜色编码)。颜色应该可以重复。

理想情况下,情节应该看起来像 this, and I have found ,提供类似的东西,但我想知道是否没有更好的东西。

是否有任何其他使用 R 的方法允许我这样做?

如果没有工作示例,我建议您使用 ggplot2 程序包(以及 ggfortify),它允许您将变量(此处:操作类型)映射到颜色。一个常见的选择是尺寸(points/dots)或粗细(线条)。

此外,您可能会发现 time-series ts 个对象(请参阅 example/reference here)。但是,这不是您有兴趣绘制的数据类型的要求。祝你好运!

我有基本 R 方法的工作原理。它有点 hacky,但通过一些调整它应该可以很好地工作。我已经删除了对 data.tabletimelineggplot 包的依赖,选择使用 polygon 函数。

df <- data.frame(Set=c("x","y","z","x","y","z","x","y","z","x","y","z","x"),
       StartDate=c(1380708900,1402963200,1420070400,1421280000,1410912000,1396310400,1397520000,1418860800,1404172800,1405382400,1395100800,1412121600,1413331200),
       EndDate=  c(1395099900,1404171900,1421279100,1430985600,1412120700,1397519100,1402962300,1420069500,1405381500,1410911100,1396309500,1413330300,1418859900))

df$StartLabel <- as.POSIXct(df$StartDate,tz="UTC",origin="1970-01-01")
df$Set <- as.factor(df$Set)

上面设置了data.frame对象。

这设置了绘图canvas

plot(c(df$StartDate[1], tail(df$EndDate,1)), c(0.4,0.65), 
     type='n', xlab='Time', ylab='', axes=FALSE)

这 clunk-ily 遍历您的值并为每个观察的每个时间段绘制一个彩色多边形

for(i in 1:nrow(df)){
  polygon(x=c(rep(df$StartDate[i],2), rep(df$EndDate[i],2)), 
          y=c(0.6,0.4,0.4,0.6), col=rainbow(3, alpha=0.75)[df$Set[i]],
          border=rainbow(3)[df$Set[i]])
}

然后我添加轴(这可能需要一些调整,具体取决于您希望显示多少日期信息。

axis(1, labels=df$StartLabel, at=df$StartDate)

然后这就在图的顶部设置了图例。

legend('top', horiz=TRUE, 
       c('Test set', 'Training set', 'Validation set'), 
       pch=16, col=rainbow(3), bty='n', x.intersp=1.5, title='Group')

希望这对您有所帮助。