【问题标题】:how to make R render plots faster如何使 R 渲染图更快
【发布时间】:2013-12-07 14:00:54
【问题描述】:

我们正在使用 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 

【问题讨论】:

标签: r render time-complexity shiny heatmap


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    要考虑的另一件事是:

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

    【讨论】:

    • 它与使用“lattice”的hclust无关,它与减少渲染时间有关。
    猜你喜欢
    • 2017-07-28
    • 1970-01-01
    • 2013-10-04
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多