使用 lattice 包更改 xyplot 中因子变量的绘图顺序

Altering the plot order for the factor variable in an xyplot using the lattice package

我有一个按因子分组的 xyplot。我绘制了 16 个不同地点的盐度 (AvgSal = Y) 与时间 (DayN = X),地点是因素 (SiteCode)。我想要堆叠所有的站点图,所以我将布局设置为一列 16 行。

第一期: 我想删除每个图上方仅包含 SiteCode 标签的条带,因为它占用了很多 space。相反,我可以引入带有 SiteCode 名称的第二列,或者在与绘图相同的条带中引入图例。谁能告诉我如何去除标签条并以不同的方式引入标签?

代码如下:

示例数据

zz <- "SiteCode DayN   AvgSal
1        CC  157 29.25933
2        CC  184 29.68447
3        DW  160 26.47328
4        DW  190 29.07192
5        FP  157 30.40344
6        FP  184 30.58842
7        IN  157 30.25319
8        IN  184 29.20716
9        IP  156 29.09548
10       IP  187 27.86887
11       LB  162 27.58603
12       LB  191 28.86910
13       LR  160 28.06035
14       LR  190 29.52723
15       PB  159 30.10903
16       PB  188 29.46113
17       PG  161 29.67765
18       PG  189 28.90864
19       SA  162 23.23362
20       SA  190 26.96549
21       SH  156 24.86752
22       SH  187 23.12184
23       SP  161 18.95347
24       SP  189 19.16433
25       VC  162 29.49714
26       VC  186 29.66493
27       WP  157 27.33631
28       WP  183 27.18465
29       YB  157 30.50193
30       YB  183 30.49824
31       ZZ  159 30.14175
32       ZZ  186 29.44860"

Data <- read.table(text=zz, header = TRUE)

xyplot(AvgSal~DayN | factor(SiteCode),
   layout = c(1, 16),
   xlab = "Time (Day of the year)",
   ylab = "Average Salinity (PSU)",
   strip = function(bg = 'white', ...) strip.default(bg = 'white', ...),
   data = Data, type = c("a","p"))

第二期: 条带按 SiteCode 字母顺序排列,或者按原始顺序将它们输入到 csv 数据文件中。我想将它们从平均盐度从最高到最低排序,但我不知道如何实现。谁能帮忙? 我尝试使用 order () 更改数据布局,以便在 运行 绘图之前按升序盐度排序,但这似乎不起作用,即使我删除了行名。

我还尝试了 How to change the order of the panels in simple Lattice graphs 中的解决方案,方法是分配设置级别,即

levels(Data$SiteCode) <- c("SP", "SA", "SH", "LB", "DW",
                           "LR", "PG", "VC", "ZZ", "PB", 
                           "WP", "IP", "IN", "CC", "FP", "YB")

这似乎改变了每个面板上方的标签,但它并没有改变相应的图,留下了错误标签的图。如果我想对大量变量执行此过程,这似乎也是一种低效的方法。

任何帮助将不胜感激!干杯:)

事后看来,解决方案总是那么简单。

问题 1:我不得不在 factor 命令中使用 levels()reorder(),其中 X = 我想用来订购 SiteCode 的数字因子。

xyplot(AvgSal ~ DayN | factor(SiteCode, levels(reorder(SiteCode, X),

问题2:原来很简单,一旦我知道我在做什么。只需要 'turn off' 剥离,下面完全去除标题条。

strip = FALSE

此外,我决定让条带在左侧垂直对齐会更好:

strip = FALSE,
strip.left = strip.custom(horizontal = FALSE)