R ggplot:如何在多个绘图上不同地设置y轴限制/缩放比例

时间:2020-05-31 07:41:51

标签: r ggplot2

我叫Ihsan,很抱歉,如果我的英语听不懂, 我需要帮助以不同的方式为每组/每行设置多个图上的y轴极限/比例,因为某些图不太明显。

这是我的多个情节: enter image description here

如您所见,“平滑”中的情节不太明显。我也想知道是否有一种方法可以自适应地设置y轴跟随数据范围。

这是我的数据:

coba <- structure(list(time = c(2018, 2018.08333333333, 2018.16666666667, 
2018.25, 2018.33333333333, 2018.41666666667, 2018.5, 2018.58333333333, 
2018.66666666667, 2018.75, 2018.83333333333, 2018.91666666667, 
2019, 2019.08333333333, 2019.16666666667, 2019.25, 2019.33333333333, 
2019.41666666667, 2019.5, 2019.58333333333, 2019.66666666667, 
2019.75, 2019.83333333333, 2019.91666666667, 2020, 2020.08333333333, 
2020.16666666667, 2018, 2018.08333333333, 2018.16666666667, 2018.25, 
2018.33333333333, 2018.41666666667, 2018.5, 2018.58333333333, 
2018.66666666667, 2018.75, 2018.83333333333, 2018.91666666667, 
2019, 2019.08333333333, 2019.16666666667, 2019.25, 2019.33333333333, 
2019.41666666667, 2019.5, 2019.58333333333, 2019.66666666667, 
2019.75, 2019.83333333333, 2019.91666666667, 2020, 2020.08333333333, 
2020.16666666667, 2018, 2018.08333333333, 2018.16666666667, 2018.25, 
2018.33333333333, 2018.41666666667, 2018.5, 2018.58333333333, 
2018.66666666667, 2018.75, 2018.83333333333, 2018.91666666667, 
2019, 2019.08333333333, 2019.16666666667, 2019.25, 2019.33333333333, 
2019.41666666667, 2019.5, 2019.58333333333, 2019.66666666667, 
2019.75, 2019.83333333333, 2019.91666666667, 2020, 2020.08333333333, 
2020.16666666667, 2018, 2018.08333333333, 2018.16666666667, 2018.25, 
2018.33333333333, 2018.41666666667, 2018.5, 2018.58333333333, 
2018.66666666667, 2018.75, 2018.83333333333, 2018.91666666667, 
2019, 2019.08333333333, 2019.16666666667, 2019.25, 2019.33333333333, 
2019.41666666667, 2019.5, 2019.58333333333, 2019.66666666667, 
2019.75, 2019.83333333333, 2019.91666666667, 2020, 2020.08333333333, 
2020.16666666667), group = c("smooth", "smooth", "smooth", "smooth", 
"smooth", "smooth", "smooth", "smooth", "smooth", "smooth", "smooth", 
"smooth", "smooth", "smooth", "smooth", "smooth", "smooth", "smooth", 
"smooth", "smooth", "smooth", "smooth", "smooth", "smooth", "smooth", 
"smooth", "smooth", "intermittent", "intermittent", "intermittent", 
"intermittent", "intermittent", "intermittent", "intermittent", 
"intermittent", "intermittent", "intermittent", "intermittent", 
"intermittent", "intermittent", "intermittent", "intermittent", 
"intermittent", "intermittent", "intermittent", "intermittent", 
"intermittent", "intermittent", "intermittent", "intermittent", 
"intermittent", "intermittent", "intermittent", "intermittent", 
"erratic", "erratic", "erratic", "erratic", "erratic", "erratic", 
"erratic", "erratic", "erratic", "erratic", "erratic", "erratic", 
"erratic", "erratic", "erratic", "erratic", "erratic", "erratic", 
"erratic", "erratic", "erratic", "erratic", "erratic", "erratic", 
"erratic", "erratic", "erratic", "lumpy", "lumpy", "lumpy", "lumpy", 
"lumpy", "lumpy", "lumpy", "lumpy", "lumpy", "lumpy", "lumpy", 
"lumpy", "lumpy", "lumpy", "lumpy", "lumpy", "lumpy", "lumpy", 
"lumpy", "lumpy", "lumpy", "lumpy", "lumpy", "lumpy", "lumpy", 
"lumpy", "lumpy"), actual_data = c(0, 148, 94, 48, 151, 0, 0, 
14, 70, 48, 59, 89, 103, 85, 72, 249, 70, 46, 63, 0, 43, 117, 
183, 62, NA, NA, NA, 0, 0, 0, 0, 0, 2, 120, 351, 740, 0, 394, 
669, 770, 349, 742, 915, 268, 296, 481, 0, 63, 0, 429, 228, NA, 
NA, NA, 0, 0, 0, 393, 361, 262, 237, 149, 181, 776, 383, 150, 
545, 284, 1076, 1167, 447, 19, 51, 13, 13, 169, 538, 570, NA, 
NA, NA, 0, 0, 0, 0, 0, 0, 0, 0, 585, 61, 0, 0, 0, 0, 0, 3984, 
347, 59, 0, 2, 17, 1, 0, 0, NA, NA, NA), method = c("svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", "svr", 
"svr", "svr", "svr", "svr", "svr", "svr", "svr"), point_forecast = c(NA, 
NA, NA, 48.0996753799743, 79.5763438172094, 48.0168972734219, 
48.0168972734219, 48.0168972734219, 69.9006492400514, 48.0996753799743, 
59.0996753799743, 79.5763438172094, 79.5763438172094, 79.5763438172094, 
71.9006492400514, 79.5763438172094, 69.8996753799743, 48.0168972734219, 
63.7966205453156, 63.7966225343945, 63.7966205453156, 63.7966205453156, 
63.7966205453156, 63.7966205453156, 63.7966205453156, 63.7966205453156, 
63.7966205453156, NA, NA, NA, 119.710429582372, 119.710429582372, 
119.710429582372, 120.000076084306, 137.39733157014, 179.964594161607, 
270.374297388654, 271.837813656059, 385.11113900032, 233.638110791947, 
349.000038463594, 386.717352711958, 437.389525425775, 343.279790315616, 
394.438380626949, 429.986683473783, 282.09801758862, 241.1518231132, 
266.213987530171, 125.039828056053, 199.439585161278, 185.69329793194, 
286.371735962498, 239.492466873368, NA, NA, NA, 313.799269157967, 
360.999742531489, 288.862188705292, 237.000573000286, 255.272473592413, 
258.315891228577, 281.838344144049, 382.99969919893, 210.885123868099, 
183.464705260668, 323.498548254514, 233.87978297062, 394.527456786046, 
343.803751510101, 100.114046104047, 138.16020518945, 272.138049378457, 
303.624284268614, 307.559874757169, 328.144675742086, 354.374346612312, 
284.447520684868, 188.434018129088, 224.321511121496, NA, NA, 
NA, 1, 1, 1, 1, 1, 1, 12.0605783660873, 1, 1, 1, 1, 1, 1, 12.0605783660873, 
12.0605783660873, 5.74024787118026, 5.74024787118026, 5.73200607066632, 
5.74024787118026, 5.74024787118026, 5.74024787118026, 3.59820241512781, 
5.74008590554601, 5.74024787118026), forecast_upper_interval = c(NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, 170.452414082618, 170.452414082618, 
170.452414082618, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 706.442123116566, 
807.120561147124, 760.241292057993, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, 876.133361363783, 780.119858808003, 816.007351800411, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, 1709.16785604818, 1711.3097395386, 
1711.30990150424), forecast_lower_interval = c(NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, 0, 0, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0, 
0, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0, 0, 0, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, 0, 0, 0)), row.names = 244:351, class = "data.frame")

这是我的代码:

library(ggplot2)
ggplot(data = coba, aes(x = time)) +
  geom_line(aes(y = actual_data, color = "actual_data"), size = 1) +
  geom_line(aes(y = point_forecast,  color = "point_forecast"), size = 1) +
  geom_line(aes(y = forecast_upper_interval, color = "forecast_interval"), size = 1) +
  geom_line(aes(y = forecast_lower_interval, color = "forecast_interval"), size = 1) +
  scale_colour_manual("",
                      breaks = c("actual_data","point_forecast","forecast_interval"),
                      values = c("black","red","blue")) +
  geom_vline(xintercept = 2019.917) +
  labs(title = "...",
       subtitle = "...",
       y = "Demand", x = "Period") + 
  facet_grid(group ~ method)

谢谢!非常感谢您的帮助或建议

1 个答案:

答案 0 :(得分:0)

您可以在scales中使用facet_grid参数。 free_y将重新调整每个构面的y轴,free_x对x轴进行相同的缩放。

  geom_line(aes(y = actual_data, color = "actual_data"), size = 1) +
  geom_line(aes(y = point_forecast,  color = "point_forecast"), size = 1) +
  geom_line(aes(y = forecast_upper_interval, color = "forecast_interval"), size = 1) +
  geom_line(aes(y = forecast_lower_interval, color = "forecast_interval"), size = 1) +
  scale_colour_manual("",
                      breaks = c("actual_data","point_forecast","forecast_interval"),
                      values = c("black","red","blue")) +
  geom_vline(xintercept = 2019.917) +
  labs(title = "...",
       subtitle = "...",
       y = "Demand", x = "Period") + 
  facet_grid(group ~ method, scales = "free_y")