2011-03-01 54 views
5

恐怕我有一個spplot()問題了。spplot() - 使color.key看起來不錯

我希望我的spplot()中的顏色表示絕對值,而不是spplot默認值中的自動值。

我通過從我想繪製的變量中創建一個因子(使用命令cut())來實現此目的。這工作很好,但顏色鍵看起來不太好。

看到它自己:

library(sp) 

data(meuse.grid) 
gridded(meuse.grid) = ~x+y 

meuse.grid$random <- rnorm(nrow(meuse.grid), 7, 2) 
meuse.grid$random[meuse.grid$random < 0] <- 0 
meuse.grid$random[meuse.grid$random > 10] <- 10 
# making a factor out of meuse.grid$ random to have absolute values plotted 
meuse.grid$random <- cut(meuse.grid$random, seq(0, 10, 0.1)) 

spplot(meuse.grid, c("random"), col.regions = rainbow(100, start = 4/6, end = 1)) 

我怎麼能在右邊的color.key好看 - 我想有更少的蜱和更少的標籤(上的每個極端也許只是一個標籤color.key)

預先感謝您!

爲了明確我的意思是絕對值:想象一下我想要顯示海面高度的地圖。 Seaheight = 0(這是最小值)應始終顯示爲藍色。 Seaheight = 10(這只是爲了舉例,是最大值)應始終顯示爲紅色。即使地圖上顯示的區域沒有海景,也不應改變。 我在我的例子中用cut()命令實現了這一點。所以這部分工作正常。

這是我的問題是關於 我不喜歡的是顏色描述在右側。有100個刻度,每個刻度都有一個標籤。我想要更少的刻度和更少的標籤。

+1

我從來沒有使用spplot,但[RColorBrewer](http://cran.r-project.org/web/packages/RColorBrewer/index.html)似乎可能在這裏很有用。我會在代碼的頂部添加一個'library(sp)',以便人們可以直接複製/粘貼/運行。 – Chase 2011-03-01 23:15:36

+1

絕對值是什麼意思?你只是想將隨機值整數到整數? – mdsumner 2011-03-01 23:37:27

+0

謝謝蔡斯!添加庫(sp)!我以爲RColorBrewer只是爲了選擇顏色!我會看看它! – speendo 2011-03-02 08:39:23

回答

6

要走的路是使用屬性colorkey。例如:

## labels 
labelat = c(1, 2, 3, 4, 5) 
labeltext = c("one", "two", "three", "four", "five") 

## plot 
spplot(meuse.grid, 
    c("random"), 
    col.regions = rainbow(100, start = 4/6, end = 1), 
    colorkey = list(
     labels=list(
      at = labelat, 
      labels = labeltext 
     ) 
    ) 
) 
0

首先,這裏不清楚你想要什麼。有很多方法可以使color.key看起來「很好」,那就是首先了解傳遞給spplot的數據以及要求的內容。 cut()提供完全格式化的區間,如(2.3,5.34),需要以不同的方式處理,增加圖的邊距,標籤的特定格式和間距等。這可能不是你最終要的。

也許你只是想整數值,從輸入值四捨五入?

library(sp) 

data(meuse.grid) 
gridded(meuse.grid) = ~x+y 

meuse.grid$random <- rnorm(nrow(meuse.grid), 7, 2) 

回合值(或TRUNC(),小區(),地板()他們。)

meuse.grid$rclass <- round(meuse.grid$random) 

spplot(meuse.grid, c("rclass"), col.regions = rainbow(100, start = 4/6, end = 1)) 
+0

不,我想顯示問題在不同地區的答案。對問卷的可能答案是0,1,2,...,10.在每個地區的每個問題的平均值得到我十進制值(儘管這不是很好的統計數據,因爲答案是離散的)。假設最小值爲5.5,最大值爲8.5。我不想讓我的地圖顯示5。5爲藍色,8.5爲紅色。我想0(如果存在)顯示爲藍色和10(如果存在)顯示爲紅色。這就是我的意思是絕對值。但我不希望所有值都顯示爲color.key中的勾號。 – speendo 2011-03-02 08:48:04

+0

這是否意味着值大於0小於10的任何值都不應顯示?把這個問題保存在搜索關鍵信息的評論中 – mdsumner 2011-03-02 09:16:17

+0

不!這意味着不應顯示小於0和大於10的任何值。事實上,除了右邊的標籤外,其他的都應該和我的例子一樣。我不想在右邊的標籤上留下那麼多的標記和許多標題。其他一切應該是一樣的。我會在我的問題中指出這一點 – speendo 2011-03-02 09:28:41

相關問題