Giter Site home page Giter Site logo

pheatmap's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pheatmap's Issues

Export pheatmap cluster to .atr, .gtr, .cdt

Hi,
Is there an easy way to export the pheatmap cluster to a .atr, .gtr, and .cdt file? I'd like to use the cluster from pheatmap in another script that I already have to take advantage of these file formats.

Really appreciate it.

order of labels

I am plotting the annotation bar on top of the heatmap and have the respective legends on right top. But the legends are getting sorted and are not in the order I specify. Could you please help?

Here is the command:

> mat
    a  b  c  d
G1  1  2  5  1
G2  54  45  56  12
G3  45  21  1  8
...
> samples
     name
a    T0
b    7 days
c    30 days
d    recovery
> pheatmap(mat, cluster_cols=F, show_rownames=F, annotation_col=samples[colnames(mat),,drop=F])

Legend box appears in the following order:
30 days
7 days
recovery
T0

I want it to be in the following order:
T0
7 days
30 days
recovery

Thanks
Saurabh

Get the position of cells

Hi, I need to add points and lines to some certain cells on pheatmap. I know this should be done with Grid. But it is very hard to get the positions or coordinates of these cells. It seems that their positions change when adjust the size of canvas.

extracting members of K-means cluster

Hi,

I have a very silly question, could you please help me in resolving it.

I have made a heat map using pheatmap.

pheatmap(t, kmeans_k=65, cluster_cols=F, mypalette3)

This gives me a nice heatmap, now how can I get genenames present in each cluster and save them to a file.

Kindly help.

Best regards
Abhishek

Pushed new version with na_col to CRAN?

It would be very handy if an updated version of this function that included the na_col option could be pushed to CRAN so users don't have to install the version from GitHub.

cluster_distance_cols="correlation" produces different relationships from cluster_distance_cols=dist(1-cor(mat))

Hi,

I've been playing with pheatmap (wonderful package). I may be missing something very basic, but I noticed that the clusters produced by cluster_distance_cols="correlation" and cluster_distance_cols=dist(1-cor(mat)) are quite different. Shouldn't they be identical? It's not that the clades are simply rotated.

I can send you example images by email, but I'd prefer not to post them publicly because the data are sensitive.

Here are the two commands:

pheatmap(sig.heat,
		 clustering_distance_rows="correlation",
		 clustering_distance_cols="correlation",
		 clustering_method="complete",
		 cluster_cols = TRUE,
		 cluster_rows = TRUE,
		 show_rownames = FALSE,
		 show_colnames = FALSE,
		 fontsize_row = row.fontsize,
		 fontsize_col = col.fontsize,
		 fontsize = fontsize,
		 annotation_col=sig.df
		 )
pheatmap(sig.heat,
		 clustering_distance_rows="correlation",
		 clustering_distance_cols=dist(1-cor(sig.heat)),
		 clustering_method="complete",
		 cluster_cols = TRUE,
		 cluster_rows = TRUE,
		 show_rownames = FALSE,
		 show_colnames = FALSE,
		 fontsize_row = row.fontsize,
		 fontsize_col = col.fontsize,
		 fontsize = fontsize,
		 annotation_col=sig.df
		 )

EDIT: I'm using pheatmap version 1.0.8 and R version 3.4.3

Combine colour legend and annotation legend

The legend for the fill colour scale and the legend for the annotation colours seems to group separately as shown in BEFORE. Is there a way to group them nicely together as seen in AFTER? It would also be nice if the whole legend group can be resized as shown.

hm1

Unable to rotate column labels

Hi,

Here is my code:

pheatmap(mat, display_numbers = T, scale = 'row',clustering_distance_rows = 'correlation', main = "Differentially Expressed Genes\n", cellwidth = 70 , cellheight = 10)

This is the result:
rplot02

But my column names are too long and I'd like to rotate them by say 45 degrees. Is that possible?

Thanks!

Position of legend

Hi,

I know, this was asked before, but could you implement a parameter to control the location of the color legend(s)? Maybe the way ggplot handles these issues (top, bottom, left, right)? I frequently have heatmaps with very long pathway names, and the legend gets placed half a meter to the right... I tried switching to ggplot, but that is not able to draw dendrograms. And heatmap.2 is a bloody pain to run in an at least somewhat dynamic fashion. Pretty please?

Best,
Carsten

Continuous legend is white in Cairo devices

Hi,
When using Cairo devices (such as in rstudio's Plots pane) the legend for numeric annotations is white. Although the color is showing on the annotation row, the legend is white or empty. Annotations for factors behave as expected.

Here is a small reproducible example:

library(Cairo)
CairoX11()
library(pheatmap)
mat <- matrix(1:12, ncol = 4, dimnames=list(paste0("r", 1:3), LETTERS[1:4]))
anno <- data.frame(age = 1:4, arm = rep(1:2,2), row.names=LETTERS[1:4])
pheatmap(mat, annotation=anno)

I went through the commits and it looks like this was introduced during the move to gtable.
I get the expected result in version 0.7.10 but in 1.0.0 (commit 16f063e) the legend is white.

I did not find any mention of this anywhere and I can reproduce this on both the current CRAN version and the latest commit of the master branch, pardon me if I missed it.

> sessionInfo()
R Under development (unstable) (2014-11-21 r67024)
Platform: x86_64-unknown-linux-gnu (64-bit)

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] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] pheatmap_1.0.2       Cairo_1.5-6          data.table_1.9.4    
[4] devtools_1.7.0       BiocInstaller_1.17.7

loaded via a namespace (and not attached):
 [1] chron_2.3-45       colorspace_1.2-6   grid_3.2.0         gtable_0.1.2      
 [5] munsell_0.4.2      plyr_1.8.1         RColorBrewer_1.1-2 Rcpp_0.11.5       
 [9] reshape2_1.4.1     scales_0.2.4       stringr_0.6.2   

could not find function "grid.pretty"

Hi,
It seems that the grid package has been removed from CRAN and the grid.pretty function in grid can not be found when using the pheatmap package. Can you take a look?

Eric

symmetric breaks

dear Raivo!
I just switched over from the heatmap.2 function in gplots to your heatmap function, awesome stuff. I'm just missing one tiny thing: would it be possible to add an argument "symbreaks", that forces the generated breaks to be symmetric?

cheers, jo

change line width of dendrogram in pheatmap in R and add annotation _row

i used this coding but i can't fix it.
`library(pheatmap)
library(grid)

data<- read.csv("C:/Users/Hp/Desktop/16 s. heat excel.csv", sep=",", header = T, row.names = "x")

mycol<- colorpanel(75, "blue", "white", "red")

###with border###
pheatmap(data,col=mycol,cellwidth = 18,cellheight = 15, fontsize_row =12,
fontsize_col = 13,angle_col = "45", trace="none", cluster_cols = T, cluster_rows = T)

p <-pheatmap(data,col=mycol,cellwidth = 18,cellheight = 15, fontsize_row =12,
fontsize_col = 13,angle_col = "45", trace="none", cluster_cols = T, cluster_rows = T)

p$gtable$grobs[[2]]$gp <- gpar(lwd = 5)
p$gtable$grobs[[1]]$gp <- gpar(col = 'blue')

png('pheatmap_gpar.png', height = 400, width = 400)
grid.newpage()
grid.draw(p$gtable)
dev.off()
heatmap help.docx

Rplot01--fin

`

Support 1-Spearman rank or 1-Kendall tau correlation coefficient as distance metric

Currently, I noticed that if one chooses 1-correlation as the distance metric for clustering that only a Pearson correlation can be used, and not kendall tau or spearman rank.

I was wondering if you would mind supporting those too by any chance? (Allowing argument method to be passed to cor() would be a simple fix, but more elegant would probably be to allow "kendall" or "spearman" in addition to "correlation" or "pearson" for a standard Pearson correlation.)

combine multiple graphs

Hi there,

I like this function a lot. Is there any way to combine multiple graphs together using pheatmap()?

Thanks!

Ji

Scales not centered

Using scale="row" does not always center the legend key correctly, while heatmap.2 does it the right way. See attached files and the matrix used to generate the heatmap.

redblue = colorRampPalette(c("navy", "white", "firebrick3"))(50)
pheatmap(mat, color=redblue, scale="row",
border_color = NA, clustering_method="complete", fontsize=4)
heatmap.2(mat, col=redblue, scale="row", trace="none")

Okay, so I cannot upload the matrix file. It looks like this (only negative values ranging from just ~ -2 to ~ -20):

2   3   4   5

1 -19.0367722 -21.2872609 -18.43942073 -18.8002461
2 -20.0367722 -18.47990598 -19.33250553 -19.33076081
3 -16.96638287 -17.58682119 -17.43942073 -18.69333089
4 -17.35870029 -18.96533281 -17.96993545 -18.59379522
5 -17.31430617 -17.58682119 -17.55489795 -18.8002461

heatmap 2
pheatmap

support for highlighting specific regions

For example, I want to highlight the regions ([1:2, 3:4]).

library("pheatmap")
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")
pheatmap(test)

How could I highlight them with a blue rectangle?

Adjust the position of row annotations

Hi,

I have been using pheatmap for a while now (great package!) but find it frustrating to adjust the position of the annotation legends. In the example below, how do I adjust the position of these legends so that they do not cover the text in my heatmap?

Thank you.

image

Example please

Hi, would you please give an example of how you plot out the heatmap in the Readme file?
Thanks!

Add breaks in the annotation_colors

Should be easy enough, just in order to reproduce the behavior of the main breaks/colors arguments. The goal is mainly to be able to set the '0' value when the scale is asymmetrical (with values going from -0.2 to +0.05 for instance).

Here is the hack I use for now:

nCol <- 100
colors <- colorRampPalette(whateverColors)(nCol)
totalRange <- c(-1, 1)
rangeX <- range(annotation_col$class)
rangeIndex <- floor((rangeX - totalRange[1]) / diff(totalRange) * (nCol) + 1)
annotation_colors <- list(class = colors[rangeIndex[1]:rangeIndex[2]])

more generic annotation_colors

Is there a way to specify annotation_colors color scheme? Currently, I have to assign a specific color that matches a specific annotation_row and annotation_col row name. If I add or remove any annotations, I have to create a new annotation_colors list. If I don't specify annotation_colors, colors will be assigned based on a default color scheme. Is there a way to set that color scheme?

warning if breaks specify in function pheatmap (pheatmap_0.7.7)

Hi,

a warning message is thrown when the argument breaks is specificy when calling function pheatmap (version. pheatmap_0.7.7) :

Warning in if (is.na(breaks)) { :
the condition has length > 1 and only the first element will be used

the warning is comming from line 617 of file pheatmap.r. A quick fix would be to replace line 617 by this one:

if(is.na(breaks)){
< if(is.na(breaks[1])){

thanks

Slim Fourati
Bioinformatician at VGTI-FL

Feature request: legend_font_size and subtitle.

First of all, thanks for the great software.

I have a feature request: I want the title font to be a different size than the legend text. Would it be possible to set the font size of the legends independently?

As you can see, having the legend and title the same size is not pretty:

pheatmap_H3K4me3_hg38_6_20000

Also, the whole legend does not show.

(Also it would be nice with the option of a subtitle, which should have its own default font size.)

bordor_color only works when providing filename

I want black border between my cells. This works fine when calling pheatmap() with the filename argument. However, when using the png() function directly or when viewing the image interactively in rstudio, the borders are not being drawn.

Example:

library(pheatmap)
sample_matrix <- matrix(nrow=200, ncol=200, data=1:40000)

png('matrix1.png', height=3100, width=3100)
pheatmap(sample_matrix, border_color='black')
dev.off()

pheatmap(sample_matrix, border_color='black', filename='matrix2.png', height = 10, width=10)

matrix1.png:
matrix1

matrix2.png:
matrix2

Warning: partial match of 'just' to 'justification'

Hi Raivo,

I enabled more verbose errors and warnings in my .Rprofile, and noticed that pheatmap() is partially matching justification using just in the code. To reproduce for yourself:

options(
    showErrorCalls = TRUE,
    showWarnCalls = TRUE,
    warn = 1,
    warnPartialMatchAttr = TRUE,
    warnPartialMatchDollar = TRUE
)

Best,
Mike

Support modulated modularity clustering or outline coreglated clusters in correlation heatmap

One thing that would be nice to add would be to support modulated modularity clustering for correlation heatmaps, as described in
http://journals.plos.org/plosgenetics/article?id=10.1371/journal.pgen.1000479
http://mmc.gnets.ncsu.edu/
(Python source code here,
http://mmc.gnets.ncsu.edu/data/website/pymmc-pipeline.source.tar.gz).

Or else to allow for some option to highlight positively or negatively coregulated clusters using a thick black outline.

Right now what I do is to plot a correlation heatmap using
corm=cor(m])
pheatmap(corm, clustering_method="average", clustering_distance_rows="correlation", clustering_distance_cols="correlation")
and then export the graph to Inkscape or Powerpoint and add the black squares for coregulated clusters myself, but could be nice to have an automatic option for this...

blank image generated in addition to the actual heatmap

I am using R notebook. This is my chunk:

test = matrix(rnorm(200), 20, 10)
pheatmap::pheatmap(test)

I guess it's due to the way pheatmap generates the plot, but it actually generates a blank image in addition to the actual plot.

Is there a way to get rid of that first image? I see it in the RStudio output and in the .nb.html file. If I knit to HTML, the blank plot is not there.

I also tried using the silent parameter with similar results:

p = pheatmap::pheatmap(test, silent = TRUE)
plot(p$gtable)

However, if I split the same code into two chunks, there is only one image generated:

p = pheatmap::pheatmap(test, silent = TRUE)
plot(p$gtable)

Do you know why this is happening? Is there a way to resolve this?

Unable to add gaps between columns

I am plotting a heatmap from a matrix of 8 rows and 2284 columns. The columns are grouped manually by 8 clusters. My intention is to add a gap between clusters as follows:

cell_annot <- data.frame(cluster = barcodes$cluster)          
rownames(cell_annot) <- barcodes$barcode
gap_cols <- match(unique(cell_annot$cluster), cell_annot$cluster)
cols <- colorRampPalette(c("black", "yellow"))(20)

hto_clusters_heat <- pheatmap( 
  mat_norm, 
  gaps_col = gap_cols[2:length(gap_cols)],
  cluster_rows = FALSE, 
  cluster_cols = FALSE,
  scale = "none",
  color = cols,
  annotation_col = cell_annot,
  labels_col = ""
)

All the elements of the gap_cols vector are < ncol(mat_norm). However, I get the following error:

Error in find_coordinates(length(coln), gaps) :
Gaps do not match with matrix size

If you could help me to solve this it would be much appreciate it.

Thanks

Ramon

Bold row/column labels

I needed a heatmap with some labels highlighted in boldface. To this end, I implemented the function make_bold_names() as described below. Such a feature may be interesting for a future pheatmap release.

k/r Wolfgang

library(pheatmap)
library(tidyverse)

# Create test matrix
test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")

# use this function to make row or column names bold
# parameters:
#   mat: the matrix passed to pheatmap
#   rc_fun: either rownames or colnames
#   rc_names: vector of names that should appear in boldface
make_bold_names <- function(mat, rc_fun, rc_names) {
  bold_names <- rc_fun(mat)
  ids <- rc_names %>% match(rc_fun(mat))
  ids %>%
    walk(
      function(i)
        bold_names[i] <<-
        bquote(bold(.(rc_fun(mat)[i]))) %>%
        as.expression()
    )
  bold_names
}

pheatmap(
  test,
  labels_row = make_bold_names(test, rownames, c("Gene2", "Gene5", "Gene14")),
  labels_col = make_bold_names(test, colnames, c("Test2", "Test3", "Test4")))

Created on 2019-01-24 by the reprex package (v0.2.1)

BUG: annotation_col and annotation_row have problems with DataFrame (S4Vectors)

I have been following the manual for DESeq2.
With slight modifications so her comes the "fixed" code:

sampleDists <- stats::dist(t(SummarizedExperiment::assay(vst.dds)))
sampleDistMatrix <- as.matrix(sampleDists)
rownames(sampleDistMatrix) <- labels(sampleDists)
colnames(sampleDistMatrix) <- labels(sampleDists)
# Note: pheatmap does not work properly with DataFrame S4Vectors
anno.hm = as.data.frame(SummarizedExperiment::colData(dds)[,c("condition","type")])
pheatmap(sampleDistMatrix,
         clustering_distance_rows=sampleDists,
         clustering_distance_cols=sampleDists,
         annotation_col=anno.hm)

The code breaks if you remove the as.data.frame, that transforms the Formal class 'DataFrame' [package "S4Vectors"] into a normal data.frame.

If you want to call this a bug is up to you, but it was quit tedious to track down the problem. Cause the error message wasn't very helpful.

Error in hclust(d, method = method) : size cannot be NA nor exceed 65536 Calls: pheatmap -> cluster_mat -> hclust Execution halted

Error in hclust(d, method = method) : size cannot be NA nor exceed 65536
Calls: pheatmap -> cluster_mat -> hclust
Execution halted

my data has NA, and raw number is 74789, but sometimes I run the same num of data could success, why? @raivokolde @antoine-lizee @taunometsalu

--show_rownames TRUE --show_colnames FALSE --cluster_rows TRUE --cluster_cols TRUE

pheatmap(data, scale=opt$scale,height=7, width=14, color=color.set[[opt$color.type]], 
        show_rownames=opt$show_rownames, show_colnames=opt$show_colnames,border_color=NA,
        cluster_rows=opt$cluster_rows, cluster_cols=opt$cluster_cols,fontsize_row=10,
        filename=paste(opt$outfile,".pdf",sep=""))

Using custom matrix numbers for displaying inside cells

Hi, the title says it, the case, which I came across was that I wanted to make log transform on my data, but show original values inside cells. In ggplot2 this could be done easily with stat_bin2d(geom="text", aes(label=..count..)). Maybe could be good to have in pheatmap. The question of course here, is that what kind of scale do you display afterwards, and I don't know the answer.

dont attempt to cluster if dimension size is 1

When either dimension of the matrix is 1 and the respective cluster_rows/cols is on (the default), pheatmap will fail with the following error:
Error in hclust(d, method = method) : must have n >= 2 objects to cluster

I suggest checking the dimensions of the input and not attempt the clustering to avoid this error.

this is something the user can manually check but it gets tedious when you have many heatmaps with different inputs that could have different dimensions depending on other things.

personally, I use this wrapper to avoid this problem:

ph = function(mat, ...) {
	cr = T
	cc = T
	if(ncol(mat)==1) { cc = F }
	if(nrow(mat)==1) { cr = F }
	pheatmap(mat, cluster_rows=cr, cluster_cols=cc,...)
}

NA in the annotations

Hi,
I got an weird problem and I wonder if you can help me out. Here is an reproducible example.

ann <- data.frame(Disease=c('Y','N','N','N','N'),
                  Sex=c(NA,'M','F','M','M'),
                  Age=c(10,20,30,10,40))
rownames(ann) <- paste('Subject',1:5,sep='_')

pdata <- matrix(runif(50,1,100),nrow=10)
colnames(pdata) <- paste('Subject',1:5,sep='_')
rownames(pdata) <- paste('Feature',1:10,sep='_')

pheatmap(pdata,cluster_cols = FALSE,annotation_col=ann)

I got an error:

Error in convert_annotations(annotation_col, annotation_colors) : 
  Factor levels on variable Sex do not match with annotation_colors

I guess this somehow is related to the NA in the annotations. If I changed the location of the NA in the annotations:

ann <- data.frame(Disease=c('Y','N','N','N','N'),
                  Sex=c('M',NA,'F','M','M'),
                  Age=c(10,20,30,10,40))
rownames(ann) <- paste('Subject',1:5,sep='_')

pheatmap(pdata,cluster_cols = FALSE,annotation_col=ann)

It works fine.

sessionInfo()
R version 3.2.0 (2015-04-16)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.9.5 (Mavericks)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

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

other attached packages:
[1] pheatmap_1.0.2

loaded via a namespace (and not attached):
[1] colorspace_1.2-6 scales_0.2.4 plyr_1.8.2 gtable_0.1.2 RColorBrewer_1.1-2
[6] Rcpp_0.11.6 grid_3.2.0 munsell_0.4.2

Feature request: support discrete heatmap values

Hello,

The output from pheatmap looks really nice, but it would be great if it supported discrete or ordinal data and produced a suitable legend in those cases, similar to the discrete row annotation legends.

Annotations for continuous scale data

I have Row/Column Annotation data in continuous scale. How do I add rows/column labels for this continuous scale data without converting them to discrete scale.

How to hide dendrogram?

Hello,

I would like to cluster the rows but do not need to plot the dendrogram on the left. Is it possible to hide it? Thanks!

Add row annotations

Great package! Could you kindly also add row-based annotations to pheatmap? See here for a good use case and a related R package that already does that (but isn't as pretty as pheatmap).

Option to disable Annotation legend Title

HI,
Thanks for the great Heatmap applications
here is what I found so far

heatmap_Plot = pheatmap(
        mat = distance_DF,
        #color = colorRampPalette(default_Colour)(100),
        show_rownames=FALSE, 
        show_colnames = FALSE,
        
        cutree_cols=annotation_DF_Size, 
        cutree_rows=annotation_DF_Size,
        drop_levels= FALSE,
        main =NA, 
        fontsize = 10,
        #cellwidth= 6,
        #cellheight= 6,
        #treeheight_row = 10, 
        #treeheight_col = 20,
        border_color = "white",
        legend_labels = NULL,
        annotation_row = annotation_DF,
        annotation_col = annotation_DF,
        annotation_colors = annotation_color_List,  
        annotation_legend = TRUE,
        annotation_names_row = FALSE, 
        annotation_names_col = FALSE,
        silent = TRUE
        )


up_tree <- heatmap_Plot$gtable$grob[[1]]
up_annotation <- heatmap_Plot$gtable$grob[[5]]
heatmap <- heatmap_Plot$gtable$grob[[2]]  
left_tree <- heatmap_Plot$gtable$grob[[3]]  
left_annotation <- heatmap_Plot$gtable$grob[[4]]
annotation_legend <- heatmap_Plot$gtable$grob[[6]]
heatmap_legend <- heatmap_Plot$gtable$grob[[7]]

I can disable the Title of Annotation legend by doing this:

annotation_legend$children[[1]] =textGrob("")

however, It seems the heatmap_Plot Grob is immutable(i cannot update the heatmap_Plot grobs)
and I don't want to risk adding them to empty gtable grob

so any help would be much appreciated

conda install -c bioconda r-pheatmap breaks rstudio

I'm setting up a conda environment with r, rstudio, pheatmap, and plan to add seurat. However, after I install r-pheatmap, I get an error when I try to run rstudio. My steps are below:

I have anaconda3 installed on a macOS Mojave

  • conda create --name env
  • conda activate env
  • conda install r
    • version 3.5.1-r351_0
  • conda install rstudio
    • version 1.1.456-h04f5b5a_1
  • rstudio
    • launches rstudio
  • conda install -c bioconda r-pheatmap
    • a large number of packages are installed, removed, superseded by a higher-priority channel, and downgraded, (see code block below)
  • rstudio
    • a pop up window with a traingle & "!" opens (instead of rstudio)

Please help, thank you

The following NEW packages will be INSTALLED:

  jbig               pkgs/main/osx-64::jbig-2.1-h4d881f8_0
  r-car              pkgs/r/osx-64::r-car-2.1_4-r3.3.2_0
  r-caret            pkgs/r/osx-64::r-caret-6.0_73-r3.3.2_0
  r-colorspace       pkgs/r/osx-64::r-colorspace-1.3_1-r3.3.2_0
  r-data.table       bioconda/osx-64::r-data.table-1.10.4-r3.3.2_0
  r-dichromat        pkgs/r/osx-64::r-dichromat-2.0_0-r3.3.2_2
  r-essentials       pkgs/r/osx-64::r-essentials-1.0-0a
  r-foreach          pkgs/r/osx-64::r-foreach-1.4.3-r3.3.2_0
  r-formatr          pkgs/r/osx-64::r-formatr-1.4-r3.3.2_0
  r-ggplot2          bioconda/osx-64::r-ggplot2-2.2.1-r3.3.2_0
  r-glmnet           pkgs/r/osx-64::r-glmnet-2.0_5-r3.3.2_0
  r-gtable           pkgs/r/osx-64::r-gtable-0.2.0-r3.3.2_0
  r-iterators        pkgs/r/osx-64::r-iterators-1.0.8-r3.3.2_0
  r-labeling         pkgs/r/osx-64::r-labeling-0.3-r3.3.2_2
  r-lme4             pkgs/r/osx-64::r-lme4-1.1_12-r3.3.2_0
  r-matrixmodels     pkgs/r/osx-64::r-matrixmodels-0.4_1-r3.3.2_0
  r-minqa            pkgs/r/osx-64::r-minqa-1.2.4-r3.3.2_2
  r-mnormt           pkgs/r/osx-64::r-mnormt-1.5_5-r3.3.2_0
  r-modelmetrics     pkgs/r/osx-64::r-modelmetrics-1.1.0-r3.3.2_0
  r-munsell          pkgs/r/osx-64::r-munsell-0.4.3-r3.3.2_0
  r-nloptr           pkgs/r/osx-64::r-nloptr-1.0.4-r3.3.2_2
  r-pbkrtest         pkgs/r/osx-64::r-pbkrtest-0.4_6-r3.3.2_0
  r-pheatmap         bioconda/osx-64::r-pheatmap-1.0.8-r3.3.2_0
  r-psych            bioconda/osx-64::r-psych-1.5.8-r3.3.2_0
  r-quantmod         pkgs/r/osx-64::r-quantmod-0.4_7-r3.3.2_0
  r-quantreg         pkgs/r/osx-64::r-quantreg-5.29-r3.3.2_0
  r-randomforest     pkgs/r/osx-64::r-randomforest-4.6_12-r3.3.2_0
  r-rcolorbrewer     pkgs/r/osx-64::r-rcolorbrewer-1.1_2-r3.3.2_3
  r-rcppeigen        pkgs/r/osx-64::r-rcppeigen-0.3.2.9.0-r3.3.2_0
  r-scales           bioconda/osx-64::r-scales-0.4.1-r3.3.2_1
  r-sparsem          pkgs/r/osx-64::r-sparsem-1.74-r3.3.2_0
  r-ttr              pkgs/r/osx-64::r-ttr-0.23_1-r3.3.2_0
  r-xts              pkgs/r/osx-64::r-xts-0.9_7-r3.3.2_2
  r-zoo              pkgs/r/osx-64::r-zoo-1.7_13-r3.3.2_0

The following packages will be REMOVED:

  r-bindr-0.1.1-r351hf348343_0
  r-bindrcpp-0.2.2-r351h32998d9_0
  r-blob-1.1.1-r351hf348343_0
  r-cellranger-1.1.0-r351hf348343_0
  r-cli-1.0.0-r351h6115d3f_0
  r-dbplyr-1.2.2-r351hf348343_0
  r-fansi-0.2.3-r351h6402f54_0
  r-glue-1.3.0-r351h6402f54_0
  r-later-0.7.3-r351h32998d9_0
  r-mongolite-1.6-r351h46e59ec_1
  r-odbc-1.1.5-r351h0a44026_0
  r-pillar-1.3.0-r351hf348343_0
  r-pkgconfig-2.0.1-r351hf348343_0
  r-profvis-0.3.5-r351h6402f54_0
  r-promises-1.0.1-r351h32998d9_0
  r-rematch-1.0.1-r351hf348343_0
  r-rjdbc-0.2_7.1-r351hf348343_0
  r-rlang-0.2.1-r351h6402f54_0
  r-tidyselect-0.2.4-r351h32998d9_0
  r-tinytex-0.6-r351hf348343_0
  r-utf8-1.1.4-r351h6402f54_0
  r-xfun-0.3-r351hf348343_0

The following packages will be SUPERSEDED by a higher-priority channel:

  cairo                 pkgs/main::cairo-1.14.12-hc4e6be7_4 --> pkgs/free::cairo-1.14.8-0
  fontconfig         pkgs/main::fontconfig-2.13.0-h5d5b041~ --> pkgs/free::fontconfig-2.12.1-3
  freetype             pkgs/main::freetype-2.9.1-hb4e5f40_0 --> pkgs/free::freetype-2.5.5-2
  glib                    pkgs/main::glib-2.56.2-hd9629dc_0 --> pkgs/free::glib-2.50.2-1
  harfbuzz             pkgs/main::harfbuzz-1.8.8-hb8d4a28_0 --> pkgs/free::harfbuzz-0.9.39-2
  icu                        pkgs/main::icu-58.2-h4b95b61_1 --> pkgs/free::icu-54.1-0
  jpeg                        pkgs/main::jpeg-9b-he5867d9_2 --> pkgs/free::jpeg-8d-2
  libiconv              pkgs/main::libiconv-1.15-hdd342a3_7 --> pkgs/free::libiconv-1.14-0
  libtiff              pkgs/main::libtiff-4.0.10-hcb84e12_2 --> pkgs/free::libtiff-4.0.6-2
  libxml2               pkgs/main::libxml2-2.9.9-hab757c2_0 --> pkgs/free::libxml2-2.9.4-0
  pango                  pkgs/main::pango-1.42.4-h060686c_0 --> pkgs/free::pango-1.40.3-1
  pcre                      pkgs/main::pcre-8.43-h0a44026_0 --> pkgs/free::pcre-8.39-1
  r-bh                 pkgs/r::r-bh-1.66.0_1-r351hf348343_0 --> bioconda::r-bh-1.60.0_2-r3.3.2_0
  r-catools          pkgs/r::r-catools-1.17.1.1-r351h32998~ --> bioconda::r-catools-1.17.1-r3.3.2_1
  r-dplyr              pkgs/r::r-dplyr-0.7.6-r351h32998d9_0 --> bioconda::r-dplyr-0.5.0-r3.3.2_1
  r-knitr               pkgs/r::r-knitr-1.20-r351hf348343_0 --> bioconda::r-knitr-1.12.3-r3.3.2_0
  r-prettyunits      pkgs/r::r-prettyunits-1.0.2-r351hf348~ --> bioconda::r-prettyunits-1.0.2-r3.3.2_0
  r-rappdirs         pkgs/r::r-rappdirs-0.3.1-r351h6402f54~ --> bioconda::r-rappdirs-0.3-r3.3.2_0
  r-readr              pkgs/r::r-readr-1.1.1-r351h32998d9_0 --> bioconda::r-readr-0.2.2-r3.3.2_0
  r-rmarkdown        pkgs/r::r-rmarkdown-1.10-r351hf348343~ --> bioconda::r-rmarkdown-0.9.5-r3.3.2_0
  r-tibble            pkgs/r::r-tibble-1.4.2-r351h6402f54_0 --> bioconda::r-tibble-1.2-r3.3.2_1

The following packages will be DOWNGRADED:

  gettext                               0.19.8.1-h15daf44_3 --> 0.19.8.1-hb0f4f8b_2
  pixman                                  0.38.0-h1de35cc_0 --> 0.34.0-hca0a616_3
  r                                            3.5.1-r351_0 --> 3.3.2-r3.3.2_0
  r-assertthat                         0.2.0-r351hf348343_0 --> 0.1-r3.3.2_4
  r-backports                          1.1.2-r351h6402f54_0 --> 1.0.4-r3.3.2_0
  r-base                                   3.5.1-h539fb6c_1 --> 3.3.2-0
  r-base64enc                          0.1_3-r351h6402f54_4 --> 0.1_3-r3.3.2_0
  r-bit                               1.1_14-r351h6402f54_0 --> 1.1_12-r3.3.2_0
  r-bit64                              0.9_7-r351h6402f54_0 --> 0.9_5-r3.3.2_0
  r-bitops                             1.0_6-r351h6402f54_4 --> 1.0_6-r3.3.2_2
  r-boot                              1.3_20-r351hf348343_0 --> 1.3_18-r3.3.2_0
  r-broom                              0.5.0-r351hf348343_0 --> 0.4.1-r3.3.2_0
  r-class                             7.3_14-r351h6402f54_4 --> 7.3_14-r3.3.2_0
  r-cluster                          2.0.7_1-r351h0b560c1_0 --> 2.0.5-r3.3.2_0
  r-codetools                         0.2_15-r351hf348343_0 --> 0.2_15-r3.3.2_0
  r-config                               0.3-r351hf348343_0 --> 0.2-r3.3.2_0
  r-crayon                             1.3.4-r351hf348343_0 --> 1.3.2-r3.3.2_0
  r-curl                                 3.2-r351h6402f54_0 --> 2.3-r3.3.2_0
  r-dbi                                1.0.0-r351hf348343_0 --> 0.5_1-r3.3.2_0
  r-digest                            0.6.15-r351h6402f54_0 --> 0.6.10-r3.3.2_0
  r-evaluate                            0.11-r351hf348343_0 --> 0.10-r3.3.2_0
  r-forcats                            0.3.0-r351hf348343_0 --> 0.1.1-r3.3.2_0
  r-foreign                           0.8_71-r351h6402f54_0 --> 0.8_67-r3.3.2_0
  r-haven                              1.1.2-r351h32998d9_0 --> 1.0.0-r3.3.2_0
  r-highr                                0.7-r351hf348343_0 --> 0.6-r3.3.2_0
  r-hms                                0.4.2-r351hf348343_0 --> 0.3-r3.3.2_0
  r-htmltools                          0.3.6-r351h32998d9_0 --> 0.3.5-r3.3.2_0
  r-htmlwidgets                          1.2-r351hf348343_0 --> 0.8-r3.3.2_0
  r-httpuv                             1.4.5-r351h32998d9_0 --> 1.3.3-r3.3.2_0
  r-httr                               1.3.1-r351hf348343_0 --> 1.2.1-r3.3.2_0
  r-jsonlite                             1.5-r351h6402f54_0 --> 1.1-r3.3.2_0
  r-kernsmooth                       2.23_15-r351h0b560c1_4 --> 2.23_15-r3.3.2_0
  r-lattice                          0.20_35-r351h6402f54_0 --> 0.20_34-r3.3.2_0
  r-lazyeval                           0.2.1-r351h6402f54_0 --> 0.2.0-r3.3.2_0
  r-magrittr                             1.5-r351hf348343_4 --> 1.5-r3.3.2_2
  r-markdown                             0.8-r351h6402f54_0 --> 0.7.7-r3.3.2_2
  r-mass                              7.3_50-r351h6402f54_0 --> 7.3_45-r3.3.2_0
  r-matrix                            1.2_14-r351h6402f54_0 --> 1.2_7.1-r3.3.2_0
  r-mgcv                              1.8_24-r351h6402f54_0 --> 1.8_16-r3.3.2_0
  r-mime                                 0.5-r351h6402f54_0 --> 0.5-r3.3.2_0
  r-miniui                           0.1.1.1-r351hf348343_0 --> 0.1.1-r3.3.2_0
  r-nlme                             3.1_137-r351h0b560c1_0 --> 3.1_128-r3.3.2_0
  r-nnet                              7.3_12-r351h6402f54_0 --> 7.3_12-r3.3.2_0
  r-openssl                            1.0.2-r351h46e59ec_1 --> 0.9.5-r3.3.2_0
  r-packrat                          0.4.9_3-r351hf348343_0 --> 0.4.8_1-r3.3.2_0
  r-pki                              0.1_5.1-r351h46e59ec_1 --> 0.1_3-r3.3.2_0
  r-plogr                              0.2.0-r351hf348343_0 --> 0.1_1-r3.3.2_0
  r-plyr                               1.8.4-r351h32998d9_0 --> 1.8.4-r3.3.2_0
  r-purrr                              0.2.5-r351h6402f54_0 --> 0.2.2-r3.3.2_0
  r-r6                                 2.2.2-r351hf348343_0 --> 2.2.0-r3.3.2_0
  r-rcpp                             0.12.18-r351h32998d9_0 --> 0.12.8-r3.3.2_0
  r-rcurl                          1.95_4.11-r351h6402f54_0 --> 1.95_4.8-r3.3.2_0
  r-readxl                             1.1.0-r351h32998d9_0 --> 0.1.1-r3.3.2_0
  r-recommended                                3.5.1-r351_0 --> 3.3.2-r3.3.2_0
  r-reshape2                           1.4.3-r351h32998d9_0 --> 1.4.2-r3.3.2_0
  r-rjava                             0.9_10-r351h6402f54_0 --> 0.9_8-r3.3.2_0
  r-rjsonio                            1.3_0-r351h32998d9_4 --> 1.3_0-r3.3.2_2
  r-rpart                             4.1_13-r351h6402f54_0 --> 4.1_10-r3.3.2_0
  r-rprojroot                          1.3_2-r351hf348343_0 --> 1.1-r3.3.2_0
  r-rsconnect                          0.8.8-r351hf348343_0 --> 0.7-r3.3.2_0
  r-rstudioapi                           0.7-r351hf348343_0 --> 0.6-r3.3.2_0
  r-shiny                              1.1.0-r351hf348343_0 --> 0.14.2-r3.3.2_0
  r-sourcetools                        0.1.7-r351h32998d9_0 --> 0.1.5-r3.3.2_0
  r-sparklyr                           0.8.4-r351hf348343_0 --> 0.5.1-r3.3.2_0
  r-spatial                           7.3_11-r351h6402f54_4 --> 7.3_11-r3.3.2_0
  r-stringi                            1.2.4-r351h32998d9_0 --> 1.1.2-r3.3.2_0
  r-stringr                            1.3.1-r351hf348343_0 --> 1.1.0-r3.3.2_0
  r-survival                          2.42_6-r351h6402f54_0 --> 2.40_1-r3.3.2_0
  r-tidyr                              0.8.1-r351h32998d9_0 --> 0.6.0-r3.3.2_0
  r-withr                              2.1.2-r351hf348343_0 --> 1.0.2-r3.3.2_0
  r-xml2                               1.2.0-r351h32998d9_0 --> 1.0.0-r3.3.2_0
  r-xtable                             1.8_2-r351hf348343_0 --> 1.8_2-r3.3.2_0
  r-yaml                               2.2.0-r351h6402f54_0 --> 2.1.14-r3.3.2_0
  rstudio                                1.1.456-h04f5b5a_1 --> 1.0.44-0
  unixodbc                                 2.3.7-h1de35cc_0 --> 2.3.6-h3efe00b_0

Clustering differences between heatmap.2 and pheatmap

I just discovered pheatmap after using heatmap.2 for a while. In both tools, you can specify clustering settings. However, if I set those parameters to use the same algorithms, the resulting heatmaps do not look similar. I mean the rows are clearly in a very different order. How can that be? Does pheatmap perform additional manipulations that heatmap.2 does not?

Example code:

# pheatmap
pheatmap(vals, scale="row", cluster_rows=T, cluster_cols=T, clustering_distance_rows = "euclidean", clustering_distance_cols = "euclidean", clustering_method = "complete", color=colors)
# heatmap.2
hclust_fun = function(x) hclust(x, method="complete")
dist_fun = function(x) dist(x, method="euclidean")
heatmap.2( as.matrix(vals), scale="row", trace="none", dendrogram="both", Rowv=T, Colv=T, distfun=dist_fun, hclustfun=hclust_fun, col=colors)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.