在日期列表的频率图中对齐x轴

时间:2016-11-01 02:51:53

标签: r plot alignment

我正在处理一组数据,每个数据都包含3个日期的列表,这些日期与三个连续操作之一的时间相关:

action.1 <- sample(seq(as.Date('2010-01-01'), as.Date('2010-02-01'), by="day"), 200, replace=TRUE)
action.2 <- action.1 + sample(seq(0,10,by=1), 200, replace=TRUE)
action.3 <- action.2 + sample(seq(0,40,by=1), 200, replace=TRUE)

为了可视化操作之间的持续时间取决于何时采用action.1 - 例如action.1的更高频率是否会延长拍摄action.2的时间?

rankn <- rank(action.1, ties.method = "first")

attach(mtcars)
layout(matrix(c(1,2), 2, 1, byrow = TRUE))

d1 = min(action.1, action.2, action.3)
d2 = max(action.1, action.2, action.3)

plot(table(action.1))

plot(action.1, rankn, col="red3", xlim=c(d1, d2))
points(action.2, rankn, col='green3')
points(action.3, rankn, col='blue3')

并获得此数字: enter image description here

但是,我无法弄清楚如何对齐这两个数字,以便频率图中x轴的上限与最右边的红点重合。我尝试设置plot(table(action.1)), xlim=c(d1,d2)),但它只是使顶部的数字消失了。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

在列表之间找到公共部分,列表应为max(min(list_1), min(list_2),...)min(max(list_1), max(list_2),...)

问题在于您的d2d2 = 2010-03-15,而应该为其指定:

d2 <- min(max(action.1), max(action.2), max(action.3))

然后,d2 = 2010-02-01,我也认为d1,将其分配给d1 <- max(min(action.1), min(action.2), min(action.3))。如果这是您的预期结果(忽略中文格式): enter image description here

修改 我更喜欢使用par(mfrow = c(2,1))来管理绘图布局。所以:

  par(mfrow = c(2,1))

  d1 <- max(min(action.1), min(action.2), min(action.3))
  d2 <- min(max(action.1), max(action.2), max(action.3))

  plot(table(action.1))

  plot(action.1, rankn, col="red3", xlim=c(d1, d2))
  points(action.2, rankn, col='green3')
  points(action.3, rankn, col='blue3')