3

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

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一个有序的因素,还有什么解决办法吗?

4

1 回答 1

4

显式设置级别striptext并将其存储为一个因素,这样 lattice 就不必为您执行强制转换(这是级别以 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)
于 2011-02-01T22:22:26.783 回答