我正在尝试绘制一些分类数据,这个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")
发布于 2012-09-25 00:53:05
您的问题是日期是以字符串的形式存储的。有关数据的结构,请参见str(dat)
。
通过添加
dat$dates <- as.Date(dat$dates,"%m/%d/%Y")
加载dat后,您可以按原始顺序获取日期。
发布于 2012-09-25 00:54:53
您的问题是,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
这就是你想要的
https://stackoverflow.com/questions/12574653
复制相似问题