這是我在ggplot2: Adding secondary transformed x-axis on top of plot的問題的後續處理,其中我使用一個繪圖中的軸作爲另一個繪圖上的頂部軸。問題在於這兩個圖的蜱蟲和柵格並不與彼此對齊,所以使用另一個圖上的一個圖的軸(以及相關聯的柵格和數據)意味着底部軸與柵格不匹配。ggplot2:不對應於刻度的網格線,或添加自定義網格?
我已經找到了解決方法,但它需要先構建一個繪圖,其中x軸刻度與網格線不匹配。我可以定義柵格和蜱應該在哪裏,但無法弄清楚如何繪製這樣的東西。我希望有人能告訴我我做錯了什麼。
我意識到網格和刻度線必須在ggplot中對齊,但我在How can I add a background grid using ggplot2?處遇到另一個帖子,它提供了一個非常接近我需要的解決方案。
按照該解決方案,我可以刪除網格和使用geom_segment
繪製一個「網格」:
pts <- data.frame(x=c(170, 170, 170, 170, 177.5, 185),
y=c(-35, -25, -15, -35, -35, -35),
xend=c(185, 185, 185, 170, 177.5, 185),
yend=c(-35, -25, -15, -15, -15, -15))
ggplot(quakes, aes(long, lat)) + geom_point(shape = 1) +
geom_segment(data=pts, aes(x, y, xend=xend, yend=yend), color="white") +
theme(panel.grid.minor = element_blank(),
panel.grid.major = element_blank())
然而,在例如創建的網格線看上去並不像一個真正的電網,因爲他們不不會延伸到情節的邊緣。爲了使它們看起來像真正的網格線,我需要它們延伸到圖的邊緣。我想我可以定義pts
位於圖的外面,以便在pts
之間繪製的線將延伸到邊緣。例如,
pts <- data.frame(x=c(170, 170, 170, 170, 177.5, 185),
y=c(-35, -25, -15, -35, -35, -35),
xend=c(185, 185, 185, 170, 177.5, 185),
yend=c(-35, -25, -15, -15, -15, -15))
ggplot(quakes, aes(long, lat)) + geom_point(shape = 1) + scale_x_continuous(limits=c(172.5, 182.5)) +
scale_y_continuous(limits=c(-30, -20)) +
geom_segment(data=pts, aes(x, y, xend=xend, yend=yend), color="white") +
theme(panel.grid.minor = element_blank(),
panel.grid.major = element_blank())
然而,由於該點的情節外,ggplot刪除缺失值,不繪製線條。 任何人都可以告訴我,如果有辦法讓這項工作?或者,有誰能告訴我是否有更好的方法來做我想做的事情?
謝謝!
Didzis,你知道我怎麼能獲得積分落後於新的網格線(而不是在上面)?我希望這些線條出現在點之後,就像常規網格一樣。謝謝! – Thomas
只需顛倒geom_point()和geom_segment()的順序(按照它們在代碼中使用的順序添加點和片段) –