如何在R中使用X轴的双重标签?

时间:2014-04-09 05:46:34

标签: r plot axis-labels

我有this个数据集。

我目前的R代码:

plot(dailyDataCenOF$cenInOFThroughput, type = "l", xaxt = "n", col = "blue",
     main = "Throughput",
     xlab = "Time",
     ylab = "Throughput (Mbps)")
axis(side = 1, at = seq(1, 48, by = 2), labels = 0:23)
par(new = TRUE)
plot(dailyDataCenOF$cenOutOFThroughput, type = "l", xaxt = "n", col = "red",
     axes = F, xlab = NA, ylab = NA)

绘制以下内容: Plot

结果 我想拥有的内容。理想情况下,我希望将数据集中的实际时间(日期不是必需的)作为X轴标签。我只设法将0:23表示为X轴标记的小时数。我试着用:

axis(side = 1, at = seq(2, 49, by = 2), labels = 0:23, col = "red")

但新标签与之前的标签重叠。即使是不同的颜色也不容易阅读。

当然我可以使用:

axis(side = 3, at = seq(2, 49, by = 2), labels = 0:23, col = "red")

但我的标签应该在底部。

这个问题是否有更优化和/或更有效的解决方案?

谢谢。

1 个答案:

答案 0 :(得分:2)

将datetime列强制转换为适当的对象会使这更容易。

d <- read.csv('https://dl.dropboxusercontent.com/u/14322966/20140401.csv')
d[, 1] <- as.POSIXct(d[, 1], format='%Y-%m-%d %H:%M:%S')
d[, 3] <- as.POSIXct(d[, 3], format='%Y-%m-%d %H:%M:%S')

xlim <- range(do.call(c,d[c(1,3)]))
plot(d[, 1:2], type='l', xlab='Time', ylab='Throughput (Mbps)', 
     xlim=xlim)
par(new = TRUE)
plot(d[, 3:4], type='l', col=2, axes=F, xlab='', ylab='', 
     xlim=xlim)
axis(4)
box(lwd=2)

计算两列中的日期时间范围可以在两个绘图调用中保持一致的xlim。

enter image description here