Question: ComplexHeatmap break values appear different in the plots
1
gravatar for EagleEye
12 months ago by
EagleEye6.7k
Sweden
EagleEye6.7k 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 • 578 views
ADD COMMENTlink modified 12 months ago by ATpoint38k • written 12 months ago by EagleEye6.7k
1

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

ADD REPLYlink modified 12 months ago by ATpoint38k • written 12 months ago by russhh5.5k

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

ADD REPLYlink written 12 months ago by EagleEye6.7k

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 12 months ago • written 12 months ago by ATpoint38k

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 12 months ago • written 12 months ago by ATpoint38k

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 12 months ago by EagleEye6.7k

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 12 months ago by EagleEye6.7k
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: 1392 users visited in the last hour