2014-10-01 70 views
2

在基本繪圖來繪製NA間隙中的R,如果有一個NA數據系列中GGPLOT2的間隙會被繪製:如何使用GGPLOT2

作爲例子請參閱:

df=data.frame(x=c(1:10),y=c(1:10)) 
df[5:7,]=NA 
plot(df,type="l") 

然而,GGPLOT2刪除缺失值並繪製一條直線 ,沒有間隙。

ggplot(data=df,aes(x,y))+geom_line() 

我想保持差距。他們是我正在使用的數據中的寶貴信息。 有沒有簡單的方法來告訴ggplot2停止忽略間隙?

回答

5

geom_line替換爲geom_path

library(ggplot2) 
ggplot(data = df, aes(x, y)) + 
    geom_path() 

enter image description here

+1

工作,即使沒有指定na.rm = TRUE。 「geom_path()」也適用。 – rnso 2014-10-01 11:23:32

+0

@rnso謝謝指出。 – 2014-10-01 11:28:29

+0

謝謝,這是我需要的。 na.rm似乎是相關的冗長,但不是真正的na.rm標誌。查看「geom_path」的輸出: 「na.rm:如果'FALSE'(默認值),用 警告刪除缺失的值,如果'TRUE'靜默地刪除缺失值。 – stuttungr 2014-10-01 11:32:19

4

這是因爲你設置 x和y來NA。 (而ggplot2的行爲比基本的行爲更合理恕我直言。)如果只有y值是NA,你會得到所需的行爲。這裏是一個解決方法:

df$g <- cumsum(apply(df, 1, anyNA)) 
ggplot(data=df,aes(x,y, group=g))+geom_line() 

resulting graph

+0

謝謝羅蘭。這很有用。結合兩個答案,即使用geom_path和group =標籤,我得到了一個更好的解決方案來解決我的問題。 – stuttungr 2014-10-01 21:24:56