2011-12-21 38 views
5

Tôi có câu hỏi về gói gplots. Tôi muốn sử dụng chức năng heatmap.2 và do đó tôi muốn thay đổi quan điểm đối xứng của tôi trong khóa màu từ 0 đến 1. Thông thường khi symkey=TRUE và bạn sử dụng col=redgreen(), một colorbar được tạo ra nơi các màu sắc được quản lý như thế này:R: heatmap.2 thay đổi mã màu

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

Bây giờ tôi muốn tạo một colorbar như thế này:

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

là cái gì đó như thể này?

Cảm ơn bạn!

Trả lời

9

Nếu bạn xem the heatmap.2 help file, có vẻ như bạn muốn đối số breaks. Từ tệp trợ giúp:

breaks (tùy chọn) Vectơ số cho biết các điểm chia tách thành màu hoặc số điểm ngắt được sử dụng, trong trường hợp đó các điểm ngắt sẽ được đặt cách đều nhau giữa min (x) và max (x)

Vì vậy, bạn sử dụng breaks để chỉ định điểm ngắt cho mỗi màu. ví dụ:

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)) 

Bit quan trọng là số breaks=c(-1,0.8,1.2,3) là điểm ngắt của bạn.

+0

Cảm ơn Mathematical.coffee. Có cách nào để tạo thêm một số chồng chéo lên màu sắc không? Thông thường tôi sử dụng redgreen (75) tạo 75 màu! – Lisann

+0

Như trong, bạn muốn -1 đến 0,8 là các sắc thái khác nhau của màu đỏ, 0,8 đến 1,2 sắc thái khác nhau của màu đen (!), 1,2 đến 3 sắc thái khác nhau của màu xanh lá cây? Bạn có thể thử thêm nhiều ngắt hơn vào 'ngắt' của bạn. ví dụ. 'c (seq (-1,0,8, length = 5), seq (0,8,1,2, length = 5), seq (1,2,3, length = 5)' để có khoảng 5 sắc thái cho mỗi lần ngắt và vân vân. bạn phải có cùng số sắc thái cho mỗi lần bẻ gãy vì 'redgreen' vảy tuyến tính từ màu đỏ sang màu xanh lá cây: nếu bạn không đồng đều, bạn sẽ nhận được các bit màu sắc đi vào nhau, nhưng vì' redgreen' là một gradient màu dần, cách bạn sẽ cho biết khi nào các điểm dừng đỏ và đen bắt đầu, vv? –

+0

Cảm ơn bạn! đây chính xác là những gì tôi cần! :) – Lisann