2012-09-25 91 views
0

我想繪製一些分類數據,這個answer非常接近我想要做的,但是在我的情況下,我在本例中看到的國家位置的日期。如何使用data.frame中的原始行順序創建繪圖?看起來即使因子在datmelt.data中的順序相同,它們也不是在圖中的y軸上順序排列。R保留行順序ggplot2 geom_tile

這裏是一個重複的例子:

library(reshape) 
library(ggplot2) 

dat <- data.frame(dates=c("01/01/2002", "09/15/2003", "05/31/2012"), Germany = c(0,1,0), Italy = c(1,0,0)) 
melt.data<-melt(dat, id.vars="dates", variable_name="country") 

qplot(data=melt.data, 
     x=country, 
     y=dates, 
     fill=factor(value), 
     geom="tile") 
+0

請發佈一個可重現的例子。一般情況下,'ggplot2'將按照因子的'levels'順序進行繪製 – mnel

回答

1

你的問題是,日期存儲爲一個字符串。有關數據的結構,請參見str(dat)

通過加載DAT後加入

dat$dates <- as.Date(dat$dates,"%m/%d/%Y") 

,你可以在原始訂單的日期。

1

您的問題是dat$dates是一個因素,默認情況下R按照字典順序排列了各個級別。 R不知道他們是日期。

所以

levels(dat$dates) 
## [1] "01/01/2002" "05/31/2012" "09/15/2003" 

和thererfore

order(dat$dates) 
## [1] 1 3 2 

如果你想R對待這些日期,那麼你可以將它們轉換爲Date

dat$dates <- as.Date(as.character(dat$dates), format = '%m/%d/%Y') 

    # now 
order(dat$dates) 
## 1 2 3 

這就是你想要