如何在xyplot()中控制面板顺序?

时间:2011-02-01 22:10:10

标签: r lattice

R按字母顺序(对于字符串)或级别顺序(对于因子)确定xyplot()中的面板顺序。我有日期作为文本,我想按时间顺序显示,而不是按字母顺序显示。

x <- sample(1:10, 10, replace = TRUE)
y <- sample(1:10, 10, replace = TRUE)
# overlapping 2010 and 2011
date <- rep(as.Date("2010-01-01") + sort(sample(200:400, 5)), each = 2)
striptext <- format(date, "%d-%b ...")
df <- data.frame(x, y, date, striptext)

这很好用:

xyplot(y ~ x | date, data = df)

但这会使日期不按顺序排列:

xyplot(y ~ x | striptext, data = df)

我不想要条带中的完整日期,但我确实希望它们的顺序正确。除了使striptext成为有序因子之外,还有其他解决方案吗?

1 个答案:

答案 0 :(得分:4)

明确设置striptext的级别并将其存储为一个因子,这样格子就不必为你做强制(这是级别以alpha顺序结束的地方):

set.seed(1)
x <- sample(1:10, 10, replace = TRUE)
y <- sample(1:10, 10, replace = TRUE)
# overlapping 2010 and 2011
date <- rep(as.Date("2010-01-01") + sort(sample(200:400, 5)), each = 2)
striptext <- format(date, "%d-%b ...")
## set the levels explicitly
df <- data.frame(x, y, date, 
                 striptext = factor(striptext, levels = unique(striptext)))
xyplot(y ~ x | striptext, data = df)