R: добавить код для сохранения отображаемой тепловой карты внутри функции - PullRequest
1 голос
/ 06 октября 2019

Я столкнулся с проблемой, связанной с загрузкой визуализации в формате .png (я также пробовал с форматом .jpeg).

У меня есть функция, которая содержит мой код. Внутри есть кусок кода, который создает тепловую карту с пакетом ComplexHeatmap и специальной функцией Heatmap (). Я хотел бы сохранить визуализацию изображения.

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

Может кто-нибудь помочь мне с этим поведением?

Заранее спасибо за совет!

if( ! "ComplexHeatmap" %in% .packages(all.available=T) ){ install_github("jokergoo/ComplexHeatmap") }
library(ComplexHeatmap)

set.seed(123)
nr1 = 4; nr2 = 8; nr3 = 6; nr = nr1 + nr2 + nr3
nc1 = 6; nc2 = 8; nc3 = 10; nc = nc1 + nc2 + nc3
mat = cbind(rbind(matrix(rnorm(nr1*nc1, mean = 1,   sd = 0.5), nr = nr1),
                  matrix(rnorm(nr2*nc1, mean = 0,   sd = 0.5), nr = nr2),
                  matrix(rnorm(nr3*nc1, mean = 0,   sd = 0.5), nr = nr3)),
            rbind(matrix(rnorm(nr1*nc2, mean = 0,   sd = 0.5), nr = nr1),
                  matrix(rnorm(nr2*nc2, mean = 1,   sd = 0.5), nr = nr2),
                  matrix(rnorm(nr3*nc2, mean = 0,   sd = 0.5), nr = nr3)),
            rbind(matrix(rnorm(nr1*nc3, mean = 0.5, sd = 0.5), nr = nr1),
                  matrix(rnorm(nr2*nc3, mean = 0.5, sd = 0.5), nr = nr2),
                  matrix(rnorm(nr3*nc3, mean = 1,   sd = 0.5), nr = nr3))
)
mat = mat[sample(nr, nr), sample(nc, nc)] # random shuffle rows and columns
rownames(mat) = paste0("row", seq_len(nr))
colnames(mat) = paste0("column", seq_len(nc))


myFunction<-function(data){
  png( file=enc2native("picture.png"),width=650, height=800)
  Heatmap(data)
  dev.off()
}


myFunction(mat)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...