R - 随时间变化可视化数据

时间:2015-10-27 13:34:40

标签: r plot

我试图随着时间的推移绘制数据集(ms / s的时间范围)。我需要显示事件的顺序,事件的类型和每个事件的持续时间+事件之间的时间。数据集由开始时间,结束时间和类别组成。

我接近这个代码,有人过去常常回答类似的问题,但发现我无法根据类别对事件进行着色,而且我不会了解代码在解决问题方面做得很好。

zucchini <- function(st, en, mingap=1)
{
  i <- order(st, en-st);
  st <- st[i];
  en <- en[i];
  last <- r <- 1
  while( sum( ok <- (st > (en[last] + mingap)) ) > 0 )
 {
   last <- which(ok)[1];
   r <- append(r, last);
  }
  if( length(r) == length(st) )
    return( list(c = list(st[r], en[r]), n = 1 ));

  ne <- zucchini( st[-r], en[-r]);
  return(list( c = c(list(st[r], en[r]), ne$c), n = ne$n+1));
}

{
 zu <- zucchini(st, en, mingap = 1);
 plot.new();
 plot.window( xlim=c(min(st), max(en)), ylim = c(0, zu$n+1));
 box(); axis(1);
 for(i in seq(1, 2*zu$n, 2))
 {
   x1 <- zu$c[[i]];
x2 <- zu$c[[i+1]];
for(j in 1:length(x1))
  rect( x1[j], (i+1)/2,  x2[j], (i+1)/2+0.5,col=data$Type, border="black",
 );
  legend('bottomright', legend = levels(data$Type), col = 1:10, cex = 0.8, pch = 1)}
}

 st <- data$Time
 en <- data$End
 coliflore(st,en)

当前代码输出this我可以告诉它最好为所有框分配相同的颜色,即第一个数据点的类别。

有没有人知道:如何让这段代码根据类别为框指定颜色,或者如何以另一种方式完成这种绘图?

1 个答案:

答案 0 :(得分:2)

对于我来说,如果没有玩具数据集的话,我会有点难以看到。为了最大程度地控制图中的着色,我想在数据框中添加一个颜色列,或者创建一个矢量来存储颜色值,以便在绘图中使用,而不是使用因子级别来生成颜色(例如数据$ Type)。例如,如果我希望因子1:3为红色,绿色和蓝色:

# create data frame with X,Y coordinates and 3 factor levels
toy_data<- data.frame (X= 1:9, Y=9:1, Factor = rep(1:3, times=3))
# create a vector of colors to use for plotting
# color function
colFxn<-function(val){
    cw_df<-data.frame(value=1:3, color = c("red", "green", "blue"))
    return(cw_df[cw_df$value %in% val,]$color)
}
col_vec<-sapply (toy_data$Factor, colFxn)
#plot
plot(toy_data$X, toy_data$Y, col=col_vec)

我更喜欢这个选项,因为我对我的颜色有控制权。通过使用RGB功能更改alpha值,或通过使用许多包中可用的颜色托盘,也可以将其扩展为透明颜色。

相关问题