[英]adjust y-axis for missings in ggplot2?
首先是一些玩具數據:
df = read.table(text =
"id year value sex
1 2000 0 1
1 2001 1 0
1 2002 0 1
1 2003 0 0
2 2000 0 0
2 2002 0 0
2 2003 1 0
3 2002 0 1
4 2000 0 0
4 2001 0 1
4 2002 1 0
4 2003 0 1 ", sep = "", header = TRUE)
當我想按性別== 1可視化年份時,我會
df2 <- df[df$sex==1,] p <- ggplot(df2, aes(y=id)) p <- p + geom_point(aes(x=year)) p
如何隱藏圖形中的觀察值2,以使每個剩余ID之間的距離相同? 當我休息時,有一種通用的方法如何調整y軸上兩個刻度之間的距離?
使用構面時,該解決方案是否也有效?
p <- ggplot(df, aes(y=id)) p <- p + geom_point(aes(x=year)) p <- p + facet_grid(sex ~.)
根據OP的說明進行編輯
創建單個圖並使用gridExtra包。
我不確定這是否是您要尋找的,但是使用reorder()
應該會有所幫助。 為了進行測試,我在玩具數據幀中將“ id”值4更改為7。
要在各個圖中降低水平,可以創建2個圖,然后將它們並排放置。
df2 <- df[df$sex==1,]
p1 <- ggplot(df2, aes(y=(reorder(id, id))))
p1 <- p1 + geom_point(aes(x=year))
p1
df3 <- df[df$sex==0,]
p2 <- ggplot(df3, aes(y=(reorder(id, id))))
p2 <- p2 + geom_point(aes(x=year))
如果您注意到,沒有數據的ID將被刪除。 例如,以下沒有id = 2。
現在,您可以使用為此目的專用的gridExtra包來打印出圖p1和p2。
require(gridExtra)
grid.arrange(p1, p2, ncol=2)
直接使用facet_grid是行不通的,但這是設計使然。 Facet_grip的默認值為drop=TRUE
。 請注意,您沒有看到id = 5或6。如果一個ID出現在任何一個面板中,則該ID會包含在所有其他面板中以方便比較。
p <- ggplot(df, aes(y=reorder(id, id)))
p <- p + geom_point(aes(x=year))
p <- p + facet_grid(sex ~.)
p
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.