我有几个包含相关性的方形矩阵,但大小差别很大(从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子矩阵,然后取每个子矩阵的平均值。
这样做的好方法是什么?
答案 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)
答案 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)