У меня есть симпатичный маленький график, который отслеживает данные с течением времени. Данные охватывают последние 12 недель, собираются ежедневно, группируются по неделям и выводятся еженедельно. Он работал безупречно, пока смена года не вывела мой фактор (Неделя) из окна и не начала составлять график 2019-ой недели 1 перед 43-й неделей 2018 года. Как я могу автоматизировать уровни факторов при изменении порядка на новый год? Я могу вручную регулировать уровни факторов до 12 недели, но это похоже на бандит.
Это выход, который я пытаюсь достичь без ручного вмешательства.
data <- structure(list(ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L,
8L), .Label = c("58", "66", "68", "77", "79", "80", "84", "98"
), class = "factor"), Year = c(2019, 2019, 2019, 2018, 2018,
2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
2018, 2019, 2019, 2019, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
2018, 2018, 2018, 2018, 2018, 2019, 2019, 2019, 2018, 2018, 2018,
2018, 2018, 2018, 2018, 2018, 2018, 2019, 2019, 2019, 2018, 2018,
2018, 2018, 2018, 2018, 2018, 2018, 2018, 2019, 2019, 2019, 2018,
2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
2018, 2018), Week = c(1L, 2L, 3L, 43L, 44L, 45L, 46L, 47L, 48L,
49L, 50L, 51L, 43L, 44L, 45L, 46L, 47L, 1L, 2L, 3L, 46L, 47L,
48L, 49L, 50L, 51L, 44L, 45L, 46L, 47L, 48L, 49L, 1L, 2L, 3L,
43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 1L, 2L, 3L, 43L,
44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 1L, 2L, 3L, 43L, 44L,
45L, 46L, 47L, 48L, 49L, 50L, 51L, 43L, 44L, 45L, 46L, 47L),
Output = c(49.9, 67.42, 31.27, 65.8925, 79.2925, 103.47,
120.1125, 122.645, 109.3925, 91.3125, 81.06, 78.38, 119.13,
93.71, 149.74, 122.8775, 117.1075, 32.81, 29.49, 16.71, 42.8725,
60.6425, 71.2, 86.155, 78.6225, 81.605, 73.51, 84.42, 105.4,
74.515, 57.825, 42.8475, 11.26, 44.34, 22.83, 41.695, 75.77,
80.785, 118.175, 131.2875, 124.2375, 124.905, 85.7275, 61.7525,
188.23, 108.42, 42.42, 111.41, 79.8825, 70.4075, 72.695,
61.235, 58.7825, 47.9275, 46.5275, 48.1775, 11.09, 10.13,
0, 21.3375, 30.1275, 32.97, 53.51, 51.09, 40.385, 35.9025,
23.44, 21.1125, 111.94, 102.76, 105.71, 112.36, 115.7875)), class = "data.frame", row.names = c(NA,
-73L))
ggplot(data,
aes(factor(Week,
levels = c(43, 44, 45, 46, 47, 48, 49, 50, 51, 1, 2, 3)),
Output)) +
geom_line(size = 1.5,
aes(colour = ID,
group = ID)) +
geom_point(aes(y = Output,
colour = ID),
size = 4,
shape = 21,
fill = "black",
stroke = 2) +
labs(x = "Week Number",
y = "output") +
scale_y_continuous(breaks = pretty_breaks(n = 20),
limits = c(0, NA))