функция cowplot plot_grid для построения таблицы в виде изображения и дендрограммы

Я пытаюсь использовать функцию plot_grid из cowplot, чтобы сделать индивидуальный график с дендрограммой в верхней строке и двумя таблицами (рядом друг с другом) во второй строке. В итоге получается моя дендрограмма и таблицы, но в двух отдельных PDF-файлах. Есть ли способ сделать их все на одной странице? Ниже мой фрагмент кода:

 pdf("test.pdf", width = 12, height = 10)
 x <-tableGrob(frames[[1]])
 y <-tableGrob(frames[[2]])
 plot.clus <-plot(test1,label=diseaseDuration,main=label)
 tables<-grid.arrange(x,y,nrow=1)
 plot_grid(bottom_row,tables)

фрагмент вывода dput для кластеризации (hclust):

 structure(list(merge = structure(c(-61L, -41L, -49L, 1L, -16L...), 
 height = c(4.23833720098634e-13, 6.36507320251999e-13.......),
 order = c(5L, 57L, 12L, 7L, 66L, 31L, 55L, 6L, 10L, 37L,..),
 labels = c("ABC00001", "ABC00002", "ABC00003",......),
 method = "ward.D", 
 call = hclust(d = data, method = "ward.D"), dist.method = 
 "euclidean"), .Names = c("merge", "height", "order", "labels", "method", "call", "dist.method"), class = "hclust")

person Mdhale    schedule 28.04.2017    source источник


Ответы (1)


Используйте plot.clus вместо z сюжета

library( 'ggplot2' )
library( 'cowplot' )
library( 'gridExtra' )

x <- tableGrob( d = data.frame( x = 1:5, y = 1:5 ) )
y <- tableGrob( d = data.frame( x = 1:5, y = 1:5 ) )
z <- ggplot( data = data.frame( x = 1:5, y = 1:5 ), 
             mapping = aes( x = x, y = y ) ) + 
  geom_line( color = 'red' )

p <- ggdraw() +
  draw_plot( plot = z, x = 0, y = .5, width = 1, height = .5 ) +  # z
  draw_plot( plot = x, x = 0, y = 0, width = .5, height = .5 ) +  # x
  draw_plot( plot = y, x = .5, y = 0, width = .5, height = .5 ) + # y 
  draw_plot_label( label = c( "A", "B", "C" ),                    # labels
                   x = c( 0, 0, 0.5 ),
                   y = c( 1, 0.5, 0.5 ), 
                   size = 16 )
# save plot as pdf
save_plot( filename = "test.pdf", plot = p, base_height = 4, base_width = 4 )
person Sathish    schedule 28.04.2017
comment
Сатиш, спасибо за ответ. Вышеприведенное на самом деле не сработало, поскольку мой plot.clus не является объектом класса ggplot или gtable. Я получаю следующую ошибку: Ошибка в ggplot_to_gtable(plot): аргумент должен быть класса ggplot или gtable - person Mdhale; 28.04.2017
comment
опубликуйте свои данные, используемые для диаграммы кластера, выполнив dput(data). Вы использовали алгоритм иерархического кластера? - person Sathish; 28.04.2017
comment
пожалуйста, добавьте вывод команды dput в свой вопрос, а не в раздел комментариев - person Sathish; 28.04.2017
comment
Сатиш: Да, я использовал иерархическую кластеризацию. Я добавил образец моего вывода dput. - person Mdhale; 28.04.2017
comment
данные, которые вы там указали, не помогут. Вам лучше попробовать ggdendro пакет самостоятельно, чтобы создать дендрограмму, совместимую с ggplot. - person Sathish; 28.04.2017
comment
Спасибо, Сатиш, это помогло. У меня есть один вопрос, как уменьшить высоту таблиц, полученных из tableGrob? - person Mdhale; 29.04.2017
comment
Tablegrob имеет аргумент темы, который можно использовать для настройки различных параметров. Google fo tablegrob и тема - person Sathish; 29.04.2017