2012-04-19 31 views
9

Tôi quan tâm đến việc tạo bản đồ nhiệt với geom_tile trong ggplot2 sử dụng màu cao khác nhau dựa trên một yếu tố.geom_tile heatmap với các màu tô cao khác nhau dựa trên hệ số

Cốt truyện bên dưới tạo ô mà các ô riêng lẻ có màu xanh dương hoặc đỏ dựa trên xy_type, nhưng không có độ dốc.

ggplot() + 
    geom_tile(data=mydata, aes(x=factor(myx), y=myy, fill=factor(xy_type))) + 
    scale_fill_manual(values=c("blue", "red")) 

Cốt truyện dưới đây không sử dụng các yếu tố xy_type để lựa chọn màu sắc, nhưng tôi nhận được một gradient nhóm đơn lẻ dựa trên xy_avg_value.

ggplot() + 
    geom_tile(data=mydata, aes(x=factor(myx), y=myy, fill=xy_avg_value)) 

Có kỹ thuật pha trộn hai ô này không? Tôi có thể sử dụng facet_grid(xy_type ~ .) để tạo các ô riêng biệt của dữ liệu này, với độ dốc. Vì điều này cuối cùng sẽ là bản đồ (tọa độ x ~ y), tôi muốn tìm cách hiển thị độ dốc khác nhau với nhau trong một bản đồ geom_tile đơn.

Trả lời

16

Nói chung, ggplot2 không cho phép nhiều thang đo của một loại đơn lẻ (nghĩa là nhiều màu hoặc tỷ lệ lấp đầy), vì vậy tôi nghi ngờ điều này không dễ (có thể).

Các xấp xỉ gần tốt nhất mà tôi có thể đưa ra là thế này:

df <- data.frame(expand.grid(1:5,1:5)) 
df$z <- runif(nrow(df)) 
df$grp <- rep(letters[1:2],length.out = nrow(df)) 

ggplot(df,aes(x = Var1,y = Var2,fill = factor(grp),alpha = z)) + 
    geom_tile() + 
    scale_fill_manual(values = c('red','blue')) 

enter image description here

Nhưng nó sẽ được khó khăn để có được một truyền thuyết hợp lý.

+0

Điều đó giải quyết vấn đề một cách hoàn hảo cho việc sử dụng của tôi. Truyền thuyết kép khá đơn giản để đọc trong ứng dụng của tôi. Cảm ơn sự giúp đỡ! – Michael

Các vấn đề liên quan