2011-12-21 129 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