ComplexHeatmap, не может создать горизонтальную легенду - PullRequest
0 голосов
/ 13 октября 2018

Привет! Я использую пакет ComplexHeatmap и следую их виньетке, однако по какой-то причине я не могу заставить легенду стать горизонтальной.Например, вот пример,

set.seed(123)
library(ComplexHeatmap)
mat = matrix(rnorm(80, 2), 8, 10)
mat = rbind(mat, matrix(rnorm(40, -2), 4, 10))
rownames(mat) = paste0("R", 1:12)
colnames(mat) = paste0("C", 1:10)

ha_column = HeatmapAnnotation(df = data.frame(type1 = c(rep("a", 5), rep("b", 5))),
                              col = list(type1 = c("a" =  "red", "b" = "blue")), 
                              annotation_legend_param = list(type1 = list( 
                                            title_gp = gpar(fontsize = 16), 
                                            legend_direction = "horizontal", labels_gp = gpar(fontsize = 8)))
                              )



ht1 = Heatmap(mat, name = "ht1", column_title = "Heatmap 1", top_annotation = ha_column)
draw(ht1, heatmap_legend_side = "right")

, поэтому, несмотря на добавление legend_direction = "horizontal", я все еще продолжаю получать это здесь, enter image description here

1 Ответ

0 голосов
/ 13 октября 2018

Если вам нужно построить легенду тепловой карты по горизонтали и внизу тепловой карты, используйте это решение:

ht1 = Heatmap(mat, name = "ht1", column_title = "Heatmap 1", top_annotation = ha_column, 
              heatmap_legend_param = list(
                                      legend_direction = "horizontal", 
                                      legend_width = unit(5, "cm")
                                     )
              )
draw(ht1, heatmap_legend_side = "bottom")

enter image description here

В противном случае,если вам нужно нарисовать (отдельную) легенду аннотации по горизонтали и вверху тепловой карты, используйте nrow=1 в annotation_legend_param:

ha_column = HeatmapAnnotation(df = data.frame(type1 = c(rep("a", 5), rep("b", 5))),
                              col = list(type1 = c("a" =  "red", "b" = "blue")), 
                              annotation_legend_param = list(
                                            type1 = list( 
                                              title_gp = gpar(fontsize = 16), 
                                              labels_gp = gpar(fontsize = 8), 
                                              nrow=1)))


ht1 = Heatmap(mat, name = "ht1", column_title = "Heatmap 1", top_annotation = ha_column)
draw(ht1, annotation_legend_side = "top")

enter image description here

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