Как правильно назначить низкие, средние и высокие цветовые ограничения с помощью пакета heatmply R для интерактивной тепловой карты
Основываясь на текущем проекте визуализации для экспериментов NGS и результатов анализа функционального обогащения, я пытаюсь создать интерактивную диаграмму тепловых карт конкретных биологических процессов-имен в строках и конкретных аннотированных генов в столбцах, используя пакет R тепловых карт-значений по существу, это кратные изменения log2, положительные или отрицательные значения, где 0 означает отсутствие корреляции / ассоциации конкретного гена с конкретным биологическим механизмом:
dd <- read.table("bim.test.trial.txt",sep="\t",header = T,row.names=1)
head(dd)
regulation.of.defense.response.to.virus
Ifng 3.332965
Il6 0.000000
Havcr2 2.436155
Lgals9 2.058915
Tlr3 0.000000
Tlr9 0.000000
regulation.of.cell.adhesion alpha.beta.T.cell.differentiation
Ifng 3.332965 3.332965
Il6 3.994865 3.994865
Havcr2 2.436155 0.000000
Lgals9 2.058915 0.000000
Tlr3 0.000000 0.000000
Tlr9 0.000000 0.000000
...
heatmaply(t(dd),
fontsize_col = 7.5,
col = cool_warm(50),
scale_fill_gradient_fun = ggplot2::scale_fill_gradient2(low = "blue", mid="white",high = "red", midpoint = 0, limits = c(-2, 2)),
main = 'Trial_test_heatmap')
# also a reproducible example:
set.seed(256)
xx2 <- matrix(rnorm(16),8,8)
range(xx2)
[1] -1.867392 1.654713
#first heatmap
heatmaply(xx2,
fontsize_col = 7.5,
col = cool_warm(50),
scale_fill_gradient_fun = ggplot2::scale_fill_gradient2(low = "blue", mid="white",high = "red", midpoint = 0, limits = c(-1, 1)), main = 'Trial_test_heatmap')
# second
heatmaply(xx2,
fontsize_col = 7.5,
col = cool_warm(50),
scale_fill_gradient_fun = ggplot2::scale_fill_gradient2(low = "blue", mid="white",high = "red", midpoint = 0, limits = c(-2, 2)), main = 'Trial_test_heatmap')
sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=Greek_Greece.1253 LC_CTYPE=Greek_Greece.1253
[3] LC_MONETARY=Greek_Greece.1253 LC_NUMERIC=C
[5] LC_TIME=Greek_Greece.1253
attached base packages:
[1] grid stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] heatmaply_0.15.2 viridis_0.5.1 viridisLite_0.3.0
[4] plotly_4.8.0 ggplot2_3.1.0 circlize_0.4.5
[7] ComplexHeatmap_1.20.0
loaded via a namespace (and not attached):
[1] httr_1.4.0 tidyr_0.8.2 jsonlite_1.6
[4] foreach_1.4.4 gtools_3.8.1 shiny_1.2.0
[7] assertthat_0.2.0 stats4_3.5.0 yaml_2.2.0
[10] robustbase_0.93-3 pillar_1.3.1 lattice_0.20-38
[13] glue_1.3.0 digest_0.6.18 promises_1.0.1
[16] RColorBrewer_1.1-2 colorspace_1.3-2 httpuv_1.4.5
[19] htmltools_0.3.6 plyr_1.8.4 pkgconfig_2.0.2
[22] GetoptLong_0.1.7 xtable_1.8-3 purrr_0.2.5
[25] mvtnorm_1.0-8 scales_1.0.0 webshot_0.5.1
[28] gdata_2.18.0 whisker_0.3-2 later_0.7.5
[31] tibble_1.4.2 withr_2.1.2 nnet_7.3-12
[34] lazyeval_0.2.1 mime_0.6 magrittr_1.5
[37] crayon_1.3.4 mclust_5.4.2 MASS_7.3-51.1
[40] gplots_3.0.1 class_7.3-14 Cairo_1.5-9
[43] tools_3.5.0 registry_0.5 data.table_1.11.8
[46] GlobalOptions_0.1.0 stringr_1.3.1 trimcluster_0.1-2.1
[49] kernlab_0.9-27 munsell_0.5.0 cluster_2.0.7-1
[52] fpc_2.1-11.1 bindrcpp_0.2.2 compiler_3.5.0
[55] caTools_1.17.1.1 rlang_0.3.0.1 iterators_1.0.10
[58] rstudioapi_0.8 rjson_0.2.20 htmlwidgets_1.3
[61] crosstalk_1.0.0 labeling_0.3 bitops_1.0-6
[64] gtable_0.2.0 codetools_0.2-15 flexmix_2.3-14
[67] TSP_1.1-6 reshape2_1.4.3 R6_2.3.0
[70] seriation_1.2-3 gridExtra_2.3 knitr_1.21
[73] prabclus_2.2-6 dplyr_0.7.8 bindr_0.1.1
[76] KernSmooth_2.23-15 dendextend_1.9.0 shape_1.4.4
[79] stringi_1.2.4 modeltools_0.2-22 Rcpp_1.0.0
[82] gclus_1.3.1 DEoptimR_1.0-8 tidyselect_0.2.5
[85] xfun_0.4 diptest_0.75-7
Тем не менее, если вы видите мое прикрепленное снимок png-изображения, значение 0, то есть желаемая средняя точка, не отображается белым цветом в теле карты тепла, и белый цвет также отсутствует, так как множество дискретных значений равно нулю в многие гены, они окрашены в другой цвет - это синий, определенный в нижнем пределе в функции scale_fill_gradient2 из ggplot2-
Таким образом, есть способ исправить эту проблему? и правильно указать низкую, среднюю и верхнюю части цветовой палитры?
заранее спасибо
Efstathios
1 ответ
Ваш диапазон данных шире (>2), чем диапазон цветов (от -2 до 2). Я полагаю, вы видите ошибку в пакете. Пожалуйста, используйте диапазон в scale_fill_gradient_fun, который включает ВСЕ ваши данные. например:
heatmaply(t(dd),
fontsize_col = 7.5,
col = cool_warm(50),
scale_fill_gradient_fun = ggplot2::scale_fill_gradient2(low = "blue", mid="white",high = "red", midpoint = 0, limits = c(-4, 4)),
main = 'Trial_test_heatmap')