2014-06-13 25 views
1

我想根據第三個變量爲xy圖生成顏色。但是,我不想使用colorRampPalette或類似的方法,因爲它們都創建了「預定義」的斜坡。也就是說,在兩個極端之間,然後選擇顏色的數量,然後函數「均勻」沿斜坡分佈。爲了給連續性帶來幻想,人們必須收集數據,並希望人們猜測出許多顏色,結果不會讓結果太不科學。這不是我想要的。我想是執行以下操作之一:基於矢量的非裝倉值生成圖的顏色

valuea {arbitrary} = colora 
valuez {arbitrary} = colorz 

根據沿顏色梯度的矢量的值,根據這些值分發色沒有預定義的在colora和colorz之間的漸變顏色的數量和放置的矢量。

valuea {min(vector)} = colora 
valuea {max(vector)} = colorz 

按照上述操作。

提到了一個「colourschemes」軟件包,但是我在一臺不做tarball的windows機器上,那個頁面上的windows版本進入了死鏈接。同樣,我能找到的關於它的什麼小文檔也不是直接的。

+2

它不是完全清楚你想要什麼,但'colorRamp'且不預定義的調色板中的顏色數量 - 它連續返回顏色基於從0到1的輸入。如果將輸入縮放爲(0,1),則colorRamp應該適合您。我認爲我寫了colourschemes來提供純粹的功能數據顏色映射,但似乎沒有人使用它,所以我讓它死亡... – Spacedman

+0

有了一點黑客攻擊,你可以創建任何你想要的斜坡。我最近接受了'grey(0:127/128)'的輸出,它看起來像'「#000000」「#020202」「#040404」...'並編輯得到''red_128' 000000「」#020000「」#040000「...'。或者你可以使用'rainbow(length(yourdata))' –

回答

1

如上所述,colorRamp應該可以正常工作。看到這個例子

cr<-colorRamp(c("red","blue")) 

x<-1:30 
y<-runif(30) 

#normalize y to 0-1 
ny <- (y-min(y))/diff(range(y)) 

plot(y~x, col=rgb(cr(ny), maxColorValue=255)) 

產生

enter image description here

+0

這很簡單。謝謝。 – Bryan

+0

我會把'colourschemes'固定在我的待辦事項列表上的github/CRAN上。 – Spacedman