0

我正在尝试绘制一些分类数据,这个答案非常接近我想要做的事情,但是在我的情况下,我在这个例子中看到的国家有日期。如何使用 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")
4

2 回答 2

1

您的问题是日期存储为字符串。参见str(dat)数据结构。

通过增加

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

加载 dat 后,您可以按原始顺序获取日期。

于 2012-09-25T00:53:04.537 回答
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

这就是你想要的

于 2012-09-25T00:54:53.020 回答