缩放不同大小的热图

时间:2014-04-25 00:42:13

标签: r visualization

我有几个包含相关性的方形矩阵,但大小差别很大(从300行/列到3000行/列)。例如,其中两个可能是:

small_matrix <- replicate(10, rnorm(10)) 
large_matrix <- replicate(100, rnorm(100)) 

但是,如果您制作这些热图,则很难比较:

heatmap(small_matrix, Rowv = NA, Colv = NA, labRow = NA, labCol = NA)
heatmap(large_matrix, Rowv = NA, Colv = NA, labRow = NA, labCol = NA)

我希望可视化效果可比,至少在&#34;印象派&#34;水平。因此,我想重新调整它们,以便它们都是10行/列。这样你至少可以对矩阵进行视觉,印象派的比较。

可能这需要以某种方式将每个矩阵划分为10x10子矩阵,然后取每个子矩阵的平均值。

这样做的好方法是什么?

2 个答案:

答案 0 :(得分:3)

你可以使用ggplot2进行一些插值(但是使用平均值会更弱)(对于融化函数你也需要重新整形)

p1 <- qplot(X1, X2, data = melt(small_matrix), fill = value, geom = "raster")
p2 <- qplot(X1, X2, data = melt(large_matrix), fill = value, geom = "raster")
p3 <- qplot(X1, X2, data = melt(small_matrix), fill = value, geom = "raster",interpolate = TRUE)
p4 <- qplot(X1, X2, data = melt(large_matrix), fill = value, geom = "raster",interpolate = TRUE)

p <- grid.arrange(p1,p2,p3,p4)

enter image description here

答案 1 :(得分:1)

另一种方法是使用raster库:

library(raster)
library(RColorBrewer)

large_matrix <- replicate(100, rnorm(100)) 
matrix_rasterized <- raster(large_matrix)

extent(matrix_rasterized) <- extent(c(-180, 180, -90, 90))
size <- raster(nrow=10, ncol=10)
matrix_resampled <- resample(matrix_rasterized, size)
matrix_rescaled <- as.matrix(matrix_resampled)

greyscale <- brewer.pal(9, "Greys")

heatmap(matrix_rescaled, labRow = NA, labCol = NA, 
main = "Large matrix - Rescaled", col = greyscale)

enter image description here