如何使R渲染图更快

时间:2013-11-22 15:56:15

标签: r render time-complexity shiny heatmap

我们正在使用R来吐出在闪亮的应用程序(网页)上呈现的绘图(热图)。目前,我们面临着一个问题,即R渲染绘图需要花费时间来进行计算。让我通过一个人为的例子来表达同样的看法。在这个基本测试用例中,R需要大约17秒的时间来渲染并将热图文件保存为png(数据计算机时间被取出:行和列集群已预先计算)

我想知道有没有办法减少渲染这种情节类型所需的时间。也许我在其他一些常量计算中缺失,这些计算也可以从热图函数中取出。

谢谢!

生成数据

m1 <- matrix(rnorm(500000,mean=15,sd=4),ncol=100)
m2 <- matrix(rnorm(500000,mean=30,sd=3),ncol=100)
m <- cbind(m1,m2)
dim(m)

所有计算的基本热图

png('test_heatmap.png')
system.time(heatmap(m))

user  system elapsed 
29.327   0.637  30.526 

从热图功能中进行聚类:主要是测试绘图渲染时间

> system.time(hcr <- hclust(dist(m)))
   user  system elapsed 
  9.992   0.126  10.144 
> system.time(hcc <- hclust(dist(t(m))))
   user  system elapsed 
  0.659   0.002   0.662 
> system.time(ddr <- as.dendrogram(hcr))
   user  system elapsed 
  0.498   0.010   0.508 
> system.time(ddc <- as.dendrogram(hcc))
   user  system elapsed 
  0.011   0.000   0.011 

使用预先计算的行/列树状图进行热图渲染时间

png('test_heatmap.png')
> system.time(heatmap(m,Rowv=ddr,Colv=ddc))
   user  system elapsed 
 16.128   0.558  17.171 

2 个答案:

答案 0 :(得分:2)

来自ggplot2包的

geom_raster( )提供高性能平铺。一旦执行了聚类,它可以加速热图可视化。

答案 1 :(得分:0)

另一件需要考虑的事情是:

library(lattice)
levelplot(hclust(dist(m)))