R G*_*cey 1 matlab visualization r data-visualization matrix
如何快速可视化R中的大型矩阵?
我有时使用大型数字矩阵(例如3000 x 3000),并且快速可视化它们是一个非常有用的质量控制步骤.这在我以前选择的语言Matlab中非常简单快捷.例如,显示1000x1000矩阵需要0.5秒:
rand_matrix = rand(1000,1000);
tic
imagesc(rand_matrix)
toc
>> Elapsed time is 0.463903 seconds.
Run Code Online (Sandbox Code Playgroud)
我想在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
Run Code Online (Sandbox Code Playgroud)
随着矩阵变大,问题变得更糟.例如,与Matlab中的秒数相比,3000x3000矩阵在R中可视化需要几分钟.这显然不适用于数据探索.我尝试过ggplot,而熔化+ geom_raster()仍然需要一分钟.
我究竟做错了什么?有没有一种快速的方法可视化R中的矩阵?一个理想的解决方案需要一两行.
使用时我很快得到了一个情节image(m, useRaster = TRUE):
start = Sys.time()
image(rand.matrix, useRaster = TRUE)
print(Sys.time() - start)
# Time difference of 0.326 secs
Run Code Online (Sandbox Code Playgroud)
没有useRaster = TRUE这需要1.5秒,useRaster加快速度,但我认为只适用于简单,均匀间隔的点.
如果您的最终目标是使用此绘图生成图像文件,那么我认为直接输出到像png这样的栅格格式可能是最有效的,尽管测量R保存图像文件的确切时间有点棘手,例如:
png("image_plot.png", width = 1000, height = 1000)
image(rand.matrix, useRaster = TRUE)
dev.off()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |