This is a test version of Biostars. For the public version, visit https://www.biostars.org.
R - pheatmap - changing column order

Dear Community,

I am drawing a heatmap with pheatmap package in R. I would like to show a certain property of two datasets and show two heatmaps next to each other. However, the order of the columns/rows in both heatmaps is slightly different. I understand that the order in which the columns/rows are organized has it's function in heatmap.

However, the two sample types I would like to change the order of, are next to another and this shouldn't disturb the whole idea of clustering. Is it possible to change the order of samples on a heatmap in pheatmap package ?

Please look at the example below:

I would like to have control in the bottom-right, and f4 in the middle. That would make this heatmap consistent with the other one I generated.

pheatmap heatmap r

Thanks Devon! I am getting so much help from you on different platforms, I really appreciate it.

So it seems that it's not possible to tweak the order of the samples without losing (and manipulating) the dendrogram ? In my case rotating the left end of the dendrogram by 180 degrees forward (from our faces) wouldn't distort the meaning, but I don't expect it to be a one-liner option in the package...

Best regards ;)

It seems that that's not a built-in option. You do it by tweaking the source code of that function, but since you only have one affected figure, it's probably faster to just save it as a pdf and reorder things in Adobe Illustrator (this sort of thing would obviously constitute the maximum permissible changes you could make to a figure). Just make sure you mention having done that in the figure legend!

2 answers

Just input thing with the rows and columns in the order you want and then use cluster_rows=F, cluster_cols=F.

Revisiting this topic so the answer is more current, I highly recommend using ComplexHeatmap. Its manual is comprehensive and covers a ton of options. The developer is active and responsive.

Carrying over row order between heatmaps can be done with

ro_1 <- row_order(heatmap_1)
heatmap_2 <- Heatmap(..., row_order = ro_1, ...)

in the process of leaning it. It looks I need to pay attention to the color for I got a "whiteboard".

Log in to answer this question.