[英]R preserving row order ggplot2 geom_tile
我試圖繪制一些分類數據,這個答案非常接近我想要做的事情,但在我的情況下,我在這個例子中看到的國家/地區的日期。 如何使用data.frame中的原始行順序創建繪圖? 似乎即使因子在dat
和melt.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.