我正在尝试绘制一些分类数据,这answer非常接近我要做的事情,但在我的情况下,我在这个例子中看到了国家/地区的日期。如何使用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")
答案 0 :(得分:1)
您的问题是日期存储为字符串。有关数据结构,请参阅str(dat)
。
添加
dat$dates <- as.Date(dat$dates,"%m/%d/%Y")
加载dat后,您可以按原始顺序获取日期。
答案 1 :(得分:1)
您的问题是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
你想要的是什么