R保留行顺序ggplot2 geom_tile

时间:2012-09-25 00:14:06

标签: r ggplot2

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

2 个答案:

答案 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

你想要的是什么