2013-09-29 108 views
2

我有我想要繪製的數據。我有幾個變量,從1880年至2012年。我每年有一次觀察。但有時候一個變量在很多年裏都沒有觀察到。例如,它可能有一個觀察從1880年至1888年,但不是從1889年至1955年,然後從1956年至2012年。我希望ggplot2 + geom_line在失蹤年份(1889-1955)沒有任何東西。但它直接連接了1888年和1956年。有什麼我可以做的,以消除這條線?我正在使用ggplot函數。R - ggplot2 - geom_line - 刪除缺失值的直線

不相關的問題,但是有沒有辦法讓ggplot不按照字母順序排列圖例中的變量名?我有這樣的代碼:

ggplot(dataFrame, aes(Year, value, colour=Name)) + geom_line() 

或者在變量名稱(Name1,...,Name10)前添加數字到圖例。例如, 1名1 2名2 ... 10 Name10

+2

的可能重複[換行符時GGPLOT2沒有數據(HTTP ://stackoverflow.com/questions/14821064/line-break-when-no-data-in-ggplot2) –

+0

這是完美的。感謝您的鏈接。 – bill999

回答

7

下面是一些樣本數據來回答你的問題,我已經添加了geom_point()功能,使其更容易看到哪些value s爲在數據:

library(ggplot2) 
seed(1234) 
dat <- data.frame(Year=rep(2000:2013,5), 
      value=rep(1:5,each=14)+rnorm(5*14,0,.5), 
      Name=rep(c("Name1","End","First","Name2","Name 3"),each=14)) 
dat2 <- dat 
dat2$value[sample.int(5*14,12)]=NA 

dat3大概是一個什麼樣的數據看起來像只是我治療Year爲整數的例子。

dat3 <- dat2[!is.na(dat2$value),] 

# POINTS ARE CONNECTED WITH NO DATA IN BETWEEN # 
ggplot(dat3, aes(Year, value, colour=Name)) + 
    geom_line() + geom_point() 

但是,如果你在你的數據列添加爲缺少一列,當你繪製的數據,你會得到的空白該值設置爲NA那麼多年。

# POINTS ARE NOT CONNECTED # 
ggplot(dat2, aes(Year, value, colour=Name)) + 
    geom_line() + geom_point() 

最後,要回答你的最後一個問題,這是你如何更改傳奇Name順序和標籤:

# CHANGE THE ORDER AND LABELS IN THE LEGEND # 
ggplot(dat2, aes(Year, value, colour=Name)) + 
    geom_line() + geom_point() + 
    scale_colour_discrete(labels=c("Beginning","Name 1","Name 2","Name 3","End"), 
          breaks=c("First","Name1","Name2","Name 3","End")) 
+0

太好了。我很感激。 – bill999