2013-11-22 2 views
14

Мы используем R, чтобы выплескивать графики (тепловые карты), которые визуализируются на блестящем приложении (веб-странице). В настоящее время мы сталкиваемся с проблемой с временем, которое требуется R, чтобы сделать график, занимающий время, необходимое для вычисления. Позвольте мне показать то же самое на надуманном примере. В этом базовом тестовом случае R занимает ~ 17 секунд для рендеринга и сохранения файла тепловой карты в виде png (время компьютерного времени выведено: кластеры строк и столбцов предварительно вычислены)как сделать R рендеринг участков быстрее

Мне интересно, есть ли способ сократить время позволяет сделать этот тип графика значительным фактором. Возможно, мне не хватает каких-либо других постоянных вычислений, которые также могут быть сняты с функции heatmap.

Спасибо!

генерировать данные

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 

сделать кластеризацию из функции Heatmap: в основном, чтобы проверить график рендеринга время

> 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 

Heatmap время рендеринга с предварительно рассчитанным строк/COL dendogram

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

Попробуйте установить 'useRaster = TRUE' в' heatmap'. Параметр задокументирован в '? Image'. – Roland

+0

@ Роланд: thkks для быстрого ответа. Где именно я должен использовать эту опцию .. Извините, быстро google dint мне очень помогает. – Abhi

+0

'heatmap (m, Rowv = ddr, Colv = ddc, useRaster = TRUE)' – Roland

ответ

0

Другое дело, чтобы рассмотреть:

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

он не связан с hclust использованием «решетки», это связано с уменьшением времени рендеринга. – igaurav

2

geom_raster() из пакета ggplot2, обеспечивает высокую производительность черепицу. Это может ускорить визуализацию тепловой карты, как только кластеризация будет выполнена.

 Смежные вопросы

  • Нет связанных вопросов^_^