Try the scatter:
scatter(x,y,sz,c,'s','filled');
where x and y are the positions of each square, sz is the size (must be a vector of the same length as x and y), and c is a 3x matrix of length (x) with a color value for each record. Labels for the chart can be entered using the set (gcf, properties) or xticklabels:
X=30; Y=10; [x,y]=meshgrid(1:X,1:Y); x=reshape(x,[size(x,1)*size(x,2) 1]); y=reshape(y,[size(y,1)*size(y,2) 1]); sz=50; sz=sz*(1+rand(size(x))); c=[1*ones(length(x),1) repmat(rand(size(x)),[1 2])]; scatter(x,y,sz,c,'s','filled'); xlab={'ACC';'BLCA';etc} xticks(1:X) xticklabels(xlab) set(get(gca,'XLabel'),'Rotation',90); ylab={'RAPGEB6';etc} yticks(1:Y) yticklabels(ylab)
EDIT: yticks and co are only available for> R2016b, if you do not have a newer version, you should use set instead:
set(gca,'XTick',1:X,'XTickLabel',xlab,'XTickLabelRotation',90) %rotation only available for >R2014b set(gca,'YTick',1:Y,'YTickLabel',ylab)
