2015-11-07 44 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) 
相關問題