2015-12-23 3 views
1

Я хочу создать пользовательскую тепловую карту, в которой матрица определяет интенсивность (альфа) ряда квадратов с однозначно заданными цветами. Кроме того, ось, определяющая каждый квадрат, будет уникальной (см. Пример ниже).Создание пользовательской тепловой карты

Какие пакеты могут помочь? geom_rect функция от ggplot2 (используется в this different question кажется многообещающим, но слишком тесно связан с данным участком


например

данных:

 [,1] [,2] 
[1,] 30 5 
[2,] 3 50 

Ось:

x_bounds <- t(matrix(c(
    0,10, 
    10,30 
), 2)) 
y_bounds <- t(matrix(c(
    0,-50, 
    -50,1000 
), 2)) 

Результат макет:

enter image description here

ответ

2

это даст ли вам, что вы хотите?

library(ggplot2) 
x_bounds <- c(0,10,30) 
y_bounds <- c(0,-50,1000) 

df <- data.frame(x = c(0,1,0,1), 
       y = c(0,0,1,1), 
       fill = c("red","green","blue","yellow"), 
       alpha = c(0.6,0.6,0.5,0.8)) 

ggplot(data = df) + 
    geom_rect(aes(xmin = x, xmax = x+1, ymin = y, ymax = y+1, 
       fill = fill, alpha = alpha)) + 
    scale_x_continuous(breaks = min(df$x):(max(df$x)+1), 
        labels = x_bounds) + 
    scale_y_continuous(breaks = min(df$y):(max(df$y)+1), 
        labels = y_bounds) + 
    scale_fill_identity() + 
    theme(panel.background=element_blank(), 
     panel.border=element_blank(), 
     panel.grid.major=element_blank(), 
     panel.grid.minor=element_blank(), 
     plot.background=element_blank()) 
+0

Ах, это так! Мне нравится то, что вы сделали, теперь я буду работать, чтобы сделать его общим. благодаря – PidgeyBAWK