2015-11-07 59 views
1

我有一个xyplot按因子分组。我绘制了16个不同站点的盐度(AvgSal = Y)和时间(DayN = X),站点是因子(SiteCode)。我想要所有的网站图块堆积,因此我将布局设置为一列16行。使用格子包更改xyplot中因子变量的绘图顺序

第一期:我想删除每个仅包含SiteCode标签的图上的条,因为它占用大量空间。相反,我可以引入带有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()来更改数据布局,以便在运行情节之前按升序排列盐度,但即使删除了rownames,这似乎也不起作用。

我也尝试了解决方案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") 

这似乎改变每个面板上方的标签,但它并没有改变相应的地块,使地块与错标签。如果我想为大量变量执行此过程,它似乎也是一种低效率的方法。

任何帮助将非常感激!欢呼声:)

回答

0

事后看来,解决方案总是显得如此简单。

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

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

问题2:一旦我知道我在做什么,结果很简单。只是不得不'关闭'带,下面完全摆脱标题带。

strip = FALSE 

此外,我决定具有在左边垂直排列将是很好的带材:

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