簡體   English   中英

我可以在facet wrap ggplot中設置動態軸限制嗎?

[英]Can I set dynamic axis limits in facet wrapped ggplot?

我有一個ETA數據集和我要繪制的實際到達數據,以便我可以將估計的時間與實際時間進行比較。 挑戰在於ETA與ATA接近,但ATA彼此相距甚遠。

這是我在立即繪制數據時獲得的情節:

在此輸入圖像描述

在該圖中,ETA是點,ATA是垂直線。 您可以看到所有估計值都略高於實際時間(即有延遲),但由於圖表的可怕規模,您不能說太多其他內容。

我嘗試了一個小平面包裝,但這會產生一個新問題。

在此輸入圖像描述

該圖可以更容易地看到估計值之間的差異,但由於實際時間位於所有估算之后,因此會從視圖中丟失。 (軸標簽也很難看,但我可以解決這個問題)。

最后有一個復雜的因素:我有很多像這樣的數據集,我想動態地繪制它們。 我想我可以將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")

使用expand ,A。Stam,使用A. Stam。

你快到了。 好的MWE做得很好。

你要找的是scale_x_*expand參數:

plot + facet_wrap(~id,nrow = 1,scales =“free_x”)+ scale_x_datetime(expand = c(0.05,48 * 3600))

expand需要兩個值,一個乘數和一個加法。 乘數在兩個方向上將軸擴展該量,此處為5%。 然后在頂部添加添加物。 你想要兩天都添加2天,所以我添加了2 x 24 x 3600.對於scale_x_datetime ,似乎它可以在幾秒鍾內完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM