【发布时间】:2018-05-03 12:16:42
【问题描述】:
我有一个要绘制的 ETA 和实际到达数据集,以便我可以将估计时间与实际时间进行比较。挑战在于 ETA 靠近 ATA,但 ATA 彼此远离。
这是我直接绘制数据时得到的图:
在此图中,ETA 是点,ATA 是垂直线。您可以看到所有估算值都略早于实际时间(即存在延迟),但由于图表的可怕规模,您不能说太多。
我已经尝试了 facet wrap,但这会产生一个新问题。
此图可以更轻松地查看估计值之间的差异,但由于实际时间位于所有估计值之后,因此无法查看。 (轴标签也很丑,但我可以解决这个问题)。
还有一个复杂的因素:我有很多这样的数据集,我想动态地绘制它们。我想我可以将 x 限制硬编码到图中,但是当我引入新数据集时,该图将完全没用。因此,将 x 范围硬编码到图表中的解决方案不会有帮助。
我认为可行的方法是将图表的每个方面的 x 限制扩大一定数量。一种“填充”,如果你愿意的话。例如,我可以说“在每个方面前后添加两天”。但是,我找不到实现这一目标的方法。任何有关如何做到这一点(或以其他方式可视化此数据)的帮助将不胜感激。
下面是生成数据和图表的代码。
library(ggplot2)
etas <- structure(list(eta = structure(c(1497391200, 1497391200, 1497391200,
1497391200, 1497391200, 1497391200, 1497391200, 1497391200, 1497391200,
1497391200, 1497391200, 1497391200, 1502229600, 1502298000, 1497391200,
1497438000, 1502229600, 1502193600, 1502229600, 1497391200, 1497333600,
1502229600, 1502229600, 1502229600, 1502229600, 1502229600, 1497391200,
1497391200, 1502229600, 1502229600, 1502229600, 1497438000, 1502229600,
1502229600, 1502229600, 1502276400, 1502229600, 1497391200, 1497391200,
1502208000, 1502229600, 1502229600, 1497391200, 1502229600, 1502229600,
1497391200, 1497391200, 1497391200, 1502283600, 1497391200, 1497438000,
1502229600, 1497391200, 1497391200, 1502283600, 1502229600, 1502229600,
1497391200, 1502283600, 1502229600, 1502229600, 1502229600, 1497391200,
1497391200, 1497391200, 1497438000, 1497391200, 1497391200, 1502276400,
1497438000, 1497391200, 1497438000, 1502229600, 1502229600, 1497391200,
1497391200, 1497438000, 1502283600, 1502229600, 1502229600, 1502229600,
1497391200, 1502229600, 1497391200, 1502229600, 1497438000, 1497348000,
1502283600, 1497391200, 1497391200, 1502283600, 1497438000, 1497391200,
1502229600, 1502229600, 1502229600, 1497391200, 1502229600, 1502229600,
1502283600, 1497391200, 1497391200, 1502229600, 1502233200, 1497391200,
1497376800, 1502229600, 1497391200, 1497391200, 1502229600, 1502229600,
1497391200, 1502229600, 1497391200, 1497391200, 1502229600, 1502229600,
1502229600, 1502229600, 1497391200, 1502229600, 1502229600, 1497391200,
1502283600, 1497438000, 1502229600, 1497391200, 1502229600, 1502229600,
1502229600, 1502229600, 1497391200, 1502229600, 1497391200, 1502229600,
1502229600, 1502229600, 1502229600, 1502229600, 1502276400, 1502229600,
1502298000, 1502283600, 1502276400, 1502229600, 1502229600, 1502229600,
1502229600), class = c("POSIXct", "POSIXt"), tzone = ""), travel_time = c(32.4625,
32.4625, 32.4625, 32.4625, 32.4625, 32.4625, 32.4625, 32.4625,
32, 32, 32, 32, 34.5416666666667, 34.5416666666667, 23, 23, 23,
23, 23, 23, 23, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 27, 27, 27,
27, 27, 27), id = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
1, 1, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 2,
2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 2,
2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1,
2, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1, 2,
2, 2, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 2, 2, 2,
1, 2, 2, 1, 2, 1, 2, 1, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2)), row.names = 157697:157844, class = "data.frame", .Names = c("eta",
"travel_time", "id"))
atas <- structure(c(1502310387, 1497461116), class = c("POSIXct", "POSIXt"
), tzone = "Europe/Amsterdam")
plot <- ggplot(etas, aes(eta, travel_time, color = factor(id))) +
geom_point() +
geom_vline(xintercept = as.integer(atas))
plot
plot + facet_wrap(~ id, nrow = 1, scales = "free_x")
【问题讨论】:
标签: r plot ggplot2 facet-wrap