Question: ComplexHeatmap break values appear different in the plots
1
gravatar for EagleEye
6 months ago by
EagleEye6.6k
Sweden
EagleEye6.6k wrote:

Hi,

I am using ComplexHeatmap package for plotting. One strange thing I noticed is that, heatmap does not take maximum and minimum break values as specified using max and min functions from R.

Code/commands used:

> min(xm)
[1] -5.460918
> max(xm)
[1] 9.361317

> Heatmap( xm, col = colorRamp2(c(min(xm), 0, max(xm)), c("#6E6E6E", "white", "#31B404")), show_row_names = F, km = 2, column_names_gp = gpar(fontsize = 7), name="Tumors" )

enter image description here

Please let me know if I am doing something wrong.

My session information:

> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)

Matrix products: default
BLAS: /sw/apps/R/x86_64/3.5.0/rackham/lib64/R/lib/libRblas.so
LAPACK: /sw/apps/R/x86_64/3.5.0/rackham/lib64/R/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods
[8] base

other attached packages:
[1] circlize_0.4.6        pheatmap_1.0.12       RColorBrewer_1.1-2
[4] gridExtra_2.3         ggplot2_3.2.1         ComplexHeatmap_1.20.0
[7] reshape2_1.4.3        svMisc_1.1.0

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.2          magrittr_1.5        tidyselect_0.2.5
 [4] munsell_0.5.0       colorspace_1.4-1    R6_2.4.0
 [7] rjson_0.2.20        rlang_0.4.0         stringr_1.4.0
[10] plyr_1.8.4          dplyr_0.8.3         tools_3.5.0
[13] gtable_0.3.0        withr_2.1.2         assertthat_0.2.1
[16] lazyeval_0.2.2      tibble_2.1.3        crayon_1.3.4
[19] purrr_0.3.2         GlobalOptions_0.1.0 glue_1.3.1
[22] shape_1.4.4         stringi_1.4.3       compiler_3.5.0
[25] pillar_1.4.2        scales_1.0.0        pkgconfig_2.0.2
[28] GetoptLong_0.1.7

Note: Also posted this on GitHub.

complexheatmap • 301 views
ADD COMMENTlink modified 6 months ago by ATpoint32k • written 6 months ago by EagleEye6.6k
1

Could you save your heatmap in an object and print the contents of my_heatmap@matrix_color_mapping, please

ADD REPLYlink modified 6 months ago by ATpoint32k • written 6 months ago by russhh5.2k

Sorry, I am not able to understand your suggestion. Can you please explain ?

ADD REPLYlink written 6 months ago by EagleEye6.6k

He means:

my_heatmap <- Heatmap( xm, col = colorRamp2(c(min(xm), 0, max(xm)), c("#6E6E6E", "white", "#31B404")), show_row_names = F, km = 2, column_names_gp = gpar(fontsize = 7), name="Tumors" )

## and then show output of:
my_heatmap@matrix_color_mapping
ADD REPLYlink modified 6 months ago • written 6 months ago by ATpoint32k

See also https://github.com/jokergoo/ComplexHeatmap/issues/82 for the developers answer on this. At the bottom of this issue he has some suggestions on how to avoid the default breaks. Using quantile on your matrix allows setting data-driven cutoffs for the range. See the issue for details.

ADD REPLYlink modified 6 months ago • written 6 months ago by ATpoint32k

Dear ATpoint, thanks a lot for your suggestion. My problem is exactly opposite to the issue mentioned in the link you provided. I am not using default breaks, providing the breaks using min and max function. Above heatmap I provided is having symmetric legend scale, but my data does not have min and max values as symmetric. I do not want to spread the gradient up-to '-10' when the data/matrix has the minimum value of '-5.460918'. Instead I would like to stop the gradient fill at exact minimum (not possible) or atleast -6 (round-off).

I have been communicating with the developer. Here is the link for reported issue, https://github.com/jokergoo/ComplexHeatmap/issues/361

ADD REPLYlink written 6 months ago by EagleEye6.6k

Heatmap function doesn't recognize the break values I mentioned using min and max.

> ht <- Heatmap( xm, col = colorRamp2(c(min(xm), 0, max(xm)), c("#6E6E6E", "white", "#31B404")), show_row_names = F, km = 2, column_names_gp = gpar(fontsize = 7), name="Tumors" )

> ht@matrix_color_mapping
Continuous color mapping:
name: Tumors
default breaks:
[1] -10  -5   0   5  10

colors:
[1] "#6E6E6EFF" "#797979FF" "#FFFFFFFF" "#A3DA8BFF" "#31B404FF"
ADD REPLYlink written 6 months ago by EagleEye6.6k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 968 users visited in the last hour