Hi,
I'm looking for a way to add xticks to a clustergram which I am creating using the function clustergram.
I simply want xticks from 0 to 4000 in spaces of 500, but could not find this option in the function.
Thanks a lot!

3 commentaires

Adam Danz
Adam Danz le 14 Nov 2019
Clustergrams use a heatmap object which is notoriously difficult to customize. That being said, we may be able to recommend some things to try but first we need more information.
Could you provide a minimal working example that reproduces your clustergram with minimal data? You could re-create your input matrix using rand() that matches the size of your input and any other additional inputs to clustergram you're using.
Shani Hadar
Shani Hadar le 24 Nov 2019
Hey,
LFC_all = rand(4062,20)
h = clustergram(LFC_all','ColorMap','jet','ColumnPDist','correlation','RowLabels',condition_Names,'DisplayRange',3,'OptimalLeafOrder',true,'Linkage','average','dendrogram',3)
title = addTitle(h,{'\fontsize{30} Clustergram of LFC of significant genes','\fontsize{20} Linkage: Average, Pdist: Correlation'});
and I invision something like this beneath my clustergram..
___________________|______________________|________________________|_______
500 1000 1500
So it will be easier to assess whats going on.
looks simple enough but I couldn't find an option in the clustergram fuction to add it.
Thanks
Adam Danz
Adam Danz le 24 Nov 2019
I see. Give my answer a try and let us know if this is what you were looking for.

Connectez-vous pour commenter.

 Réponse acceptée

Adam Danz
Adam Danz le 24 Nov 2019
Modifié(e) : Adam Danz le 25 Nov 2019

0 votes

Clustergrams use a heatmap object which is notoriously difficult to customize. The numeric labels along the rows and columns can be considered as 'XTickLabels' or 'YTickLabels' and they do not appear if the number of rows or columns becomes large. Here's a demo that shows how to display every n-th tick label along the x axis.
% Create dense clustergram
% The x tick labels will not appear due to having too many columns
data = rand(20,2000);
h = clustergram(data)
% Get heatmap axes handle
% If more than 1 clustergram exists, it will get
% the heatmap to the first clustergram listed
cgFig = findall(0,'Type','Figure','Tag','Clustergram'); %handle to clustergram figure
hpAx = findall(cgFig(1),'Type','Axes','Tag','HeatMapAxes'); %Heatmap axis handle
% Turn on selected x-tick labels: every 100_th tick will be displayed
selection = 1:100:numel(h.ColumnLabels);
hpAx.XTick = selection;
% If you want to override their values with the
% index values, left to right
hpAx.XTickLabels = selection;

2 commentaires

Shani Hadar
Shani Hadar le 25 Nov 2019
It worked, thank you
Adam Danz
Adam Danz le 25 Nov 2019
Modifié(e) : Adam Danz le 25 Nov 2019
Glad I could help!

Connectez-vous pour commenter.

Plus de réponses (1)

Raunak Gupta
Raunak Gupta le 19 Nov 2019

0 votes

Hi,
From the figure of clustergram, the xticks can be interpretated as the ‘ColumnLabels’ property of the clustergram Object. Thus, by setting the ‘ColumnLabels’ to 0:500:4000 can change the column labels of clustergram. However, the xticks will be set based on the clustering that will be happen and it may not be in ascending order.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by