簡體   English   中英

調整ggplot2中缺少的Y軸?

[英]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_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.

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