2012-10-19 57 views
0

當使用groups時,萊迪思爲每個組賦予不同的顏色。例如:如何更改萊迪思圖形默認組的顏色?

df <- data.frame(x=1:56, y=rnorm(56), class=1:14) # create some data 
xyplot(y ~ x, groups=class, data=df, type="l", auto.key=list(space="right")) 

但是,默認情況下,萊迪思只使用七種顏色,正如上面的示例所示。如果有七個以上的組,Lattice會按順序再次循環顏色,從而導致來自不同組的數據具有相同的顏色。我從另一篇Stackoverflow文章中瞭解到,這些顏色存儲在trellis.par.get()$superpose.symbol$col中。我想讓組的顏​​色列表更長(不必在繪製調用時明確指定顏色)。然而,我無法弄清楚如何改變這個顏色列表。 (這可能是由於對約格語法語義或一些基本事實的無知。)這說明了一個問題:

> trellis.par.get()$superpose.symbol$col 
[1] "#0080ff" "#ff00ff" "darkgreen" "#ff0000" "orange" "#00ff00" "brown"  
> class(trellis.par.get()$superpose.symbol$col) 
[1] "character" 
> mycolors <- c(trellis.par.get()$superpose.symbol$col, "navyblue", "purple", "gold") 
> trellis.par.get()$superpose.symbol$col[1:10] <- mycolors 
Error in trellis.par.get()$superpose.symbol$col[1:10] <- mycolors : 
    invalid (NULL) left side of assignment 

我不明白是什麼錯誤消息告訴我。

回答

4

您應該使用trellis.par.set()來設置網格圖形參數。所以:

trellis.par.set(superpose.symbol = list(col = mycolors)) 

記住,這隻會更改設置爲當前活動的設備,因此,如果您創建一個新的圖形設備,則必須重新設置顏色設置。

此外,詳細信息部分的幫助頁面?trellis.par.get中對此進行了說明。請看看那裏。

+0

我剛剛意識到我愚蠢地忽略了一個叫做... set()的函數的事實。不過,我很高興我問了這個問題,因爲你設置參數的方式比我剛想到的方式簡單得多。我瀏覽了幫助頁面,但在瞭解了簡單的解釋之後,即使現在查看了「詳細信息」部分,但我發現如果沒有深入研究就很難遵循。謝謝! – Mars

+0

@Mars,是的,我發現格子是一個很好的包裝,我也發現我花了很多時間去理解和使用它的複雜性! – BenBarnes