Entering edit mode
                    6.1 years ago
        EagleEye
        
    
        
    
    7.6k
    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" )

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.
Could you save your heatmap in an object and print the contents of
my_heatmap@matrix_color_mapping, pleaseSorry, I am not able to understand your suggestion. Can you please explain ?
He means:
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
quantileon your matrix allows setting data-driven cutoffs for the range. See the issue for details.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
minandmaxfunction. Above heatmap I provided is having symmetric legend scale, but my data does not haveminandmaxvalues 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
Heatmapfunction doesn't recognize the break values I mentioned usingminandmax.