簡體   English   中英

R保留行順序ggplot2 geom_tile

[英]R preserving row order ggplot2 geom_tile

我試圖繪制一些分類數據,這個答案非常接近我想要做的事情,但在我的情況下,我在這個例子中看到的國家/地區的日期。 如何使用data.frame中的原始行順序創建繪圖? 似乎即使因子在datmelt.data中的順序相同,它們也不是在圖中的y軸上順序排序的。

這是一個可重復的例子:

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")

您的問題是日期存儲為字符串。 請參閱str(dat)以獲取數據結構。

通過增加

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

加載dat后,您可以按原始順序獲取日期。

你的問題是dat$dates是一個因素,默認情況下, R按字典順序排列了這些級別。 R不知道他們是約會。

所以

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

因此

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

這是你想要的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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