2011-12-21 103 views
5

我對包gplots有疑問。我想使用的功能heatmap.2,所以我想我的色鍵對稱點從0更改爲1。通常,當symkey=TRUE並使用col=redgreen(),一個彩條被創建,其中的顏色都是這樣管理:R:heatmap.2更改顏色鍵

red = -2 to -0.5 
black=-0.5 to 0.5 
green= 0.5 to 2 

現在我想創建這樣一個彩條:

red= -1 to 0.8 
black= 0.8 to 1.2 
green= 1.2 to 3 

是這樣的可能嗎?

謝謝!

回答

9

如果你看看the heatmap.2 help file,它看起來像你想breaks參數。從幫助文件:

breaks(可選)要麼使用指示用於合併x轉換成顏色,或在斷裂點的整數分割點的數值向量,在這種情況下,斷點將被等間隔在最小(x)和最大(x)之間

因此,您使用breaks指定每種顏色的截止點。例如:

library(gplots) 

# make up a bunch of random data from -1, -.9, -.8, ..., 2.9, 3 
# 10x10 
x = matrix(sample(seq(-1,3,by=.1),100,replace=TRUE),ncol=10) 

# plot. We want -1 to 0.8 being red, 0.8 to 1.2 being black, 1.2 to 3 being green. 
heatmap.2(x, col=redgreen, breaks=c(-1,0.8,1.2,3)) 

關鍵是breaks=c(-1,0.8,1.2,3)是你的臨界值。

+0

謝謝Mathematical.coffee。是否還有一種方法可以爲顏色創建更多重疊?通常我使用redgreen(75)創建75種顏色! – Lisann 2011-12-21 13:11:01

+0

正如你想要-1到0.8是不同的紅色陰影,0.8到1.2不同的陰影(!),1.2到3變化的綠色陰影?你可以嘗試在你的「休息」中添加更多休息時間。例如'(seq(-1,0.8,長度= 5),seq(0.8,1.2,長度= 5),seq(1.2,3,長度= 5)'對於每個中斷等具有大約5個陰影。因爲'redgreen'從紅色到綠色呈線性縮放:如果顏色不均勻,則會有多種顏色互相滲入,但由於'redgreen'是逐漸漸變的顏色漸變,因此你會告訴紅色停止和黑色啓動等? – 2011-12-21 13:19:12

+0

謝謝!這正是我需要的!:) – Lisann 2011-12-21 13:25:17