【发布时间】:2018-10-27 02:57:54
【问题描述】:
如何在 R 中快速可视化大型矩阵?
我有时会处理较大的数字矩阵(例如 3000 x 3000),快速将它们可视化是一个非常有用的质量控制步骤。这在我之前选择的语言 Matlab 中非常简单快捷。例如,显示一个 1000x1000 矩阵需要 0.5 秒:
rand_matrix = rand(1000,1000);
tic
imagesc(rand_matrix)
toc
>> Elapsed time is 0.463903 seconds.
我希望在 R 中具有相同的功能,但不幸的是 在 R 中可视化矩阵似乎很慢。比如使用image.plot()同样的随机矩阵需要10多秒才能显示出来:
require(tictoc)
require(image.plot)
mm = 1000
nn = 1000
rand.matrix = matrix(runif(mm*nn), ncol=mm, nrow=nn)
tic("Visualizing matrix")
image.plot(rand.matrix)
toc()
> Visualizing matrix: 11.744 sec elapsed
随着矩阵变大,问题变得更糟。例如,一个 3000x3000 的矩阵在 R 中可视化需要几分钟,而在 Matlab 中则需要几秒钟。这显然不适用于数据探索。我试过 ggplot,melting + geom_raster() 仍然需要一分钟。
我做错了什么?有没有一种在 R 中可视化矩阵的快速方法?理想的解决方案需要一两行代码。
【问题讨论】:
-
在我的机器上使用内置的
image()函数(只是image(rand.matrix))需要1.75 秒,image.plot()似乎更慢。 -
@Marius
image()在我的机器上仍然需要 11.5 秒才能获得 1000x1000 矩阵,再加上几秒钟的时间才能实际显示该图。useRaster=TRUE将其加速到 5.4 秒。
标签: r matlab matrix visualization data-visualization