如何使 R 渲染图更快
Posted
技术标签:
【中文标题】如何使 R 渲染图更快【英文标题】:how to make R render plots faster 【发布时间】: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
【问题讨论】:
尝试在heatmap
中设置useRaster=TRUE
。该参数记录在?image
。
@Roland:感谢您的快速回复。我到底应该在哪里使用这个选项..抱歉,谷歌对我有很大帮助..
heatmap(m,Rowv=ddr,Colv=ddc,useRaster=TRUE)
光栅包可能也很有趣。
javascript 渲染? joecheng.com/R/heatmap.html ;讨论:groups.google.com/d/topic/shiny-discuss/rJhy5sUOe1U/discussion)
【参考方案1】:
geom_raster( ),来自 ggplot2 包,提供高性能平铺。一旦执行了聚类,它可能会加速热图可视化。
【讨论】:
【参考方案2】:要考虑的另一件事是:
library(lattice)
levelplot(hclust(dist(m)))
【讨论】:
它与使用“lattice”的hclust无关,它与减少渲染时间有关。以上是关于如何使 R 渲染图更快的主要内容,如果未能解决你的问题,请参考以下文章
如何在带有 ggplotly() 的闪亮应用程序中使用 plotlyProxy() 以使绘图渲染得更快