Screenshot instructions:
Windows
Mac
Red Hat Linux
Ubuntu
Click URL instructions:
Rightclick on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)
From: <fdu.xiaojf@gm...>  20110925 11:00:04

Dear all, Heatmap (like those on the page http://www2.warwick.ac.uk/fac/sci/moac/students/peter_cock/r/heatmap/) is a frequently used type of image in microarray data analysis. However, it seems there are no convenient functions in matplotlib to plot heatmap (please correct me if I was wrong), so I'm planning to write my own. Let me take the heatmap by the link http://www2.warwick.ac.uk/fac/sci/moac/students/peter_cock/r/heatmap/scaled_color_key.png as an example, which is produced by R. With my limited knowledge and expertise of matplotlib, I have the following questions and I hope you guys could help me. 1) I tend to use pcolor to draw the colormap in the central area. However, I've seen a lot of examples draw colormap with imshow. What's the difference between pcolor and imshow? Shall I use pcolor or imshow to produce the heatmap in the link above? 2) How to draw the dendrograms on the top and left of the colormap? I got hints from http://matplotlib.sourceforge.net/examples/axes_grid/scatter_hist.html on how to append axes to current plot, but I still have now idea how to draw the dengrograms. 3) How to draw the column side colormap (the smaller one) between the top dendrogram and the big colormap? 4) I can use colorbar to draw a colorbar, but how to place the colorbar on the topleft of the image just as the R heatmap does? 5) Any other suggestions on how to draw the heatmap? Thanks and any help will be greatly appreciated. Regards, Jianfeng 
From: <fdu.xiaojf@gm...>  20110925 10:37:53
Attachments:
Message as HTML

Dear all, Heatmap (like those on the page http://www2.warwick.ac.uk/fac/sci/moac/students/peter_cock/r/heatmap/) is a frequently used type of image in microarray data analysis. However, it seems there are no convenient functions in matplotlib to plot heatmap (please correct me if I was wrong), so I'm planning to write my own. Let me take the heatmap by the link http://www2.warwick.ac.uk/fac/sci/moac/students/peter_cock/r/heatmap/scaled_color_key.png as an example, which is produced by R. With my limited knowledge and expertise of matplotlib, I have the following questions and I hope you guys could help me. 1) I tend to use pcolor to draw the colormap in the central area. However, I've seen a lot of examples draw colormap with imshow. What's the difference between pcolor and imshow? Shall I use pcolor or imshow to produce the heatmap in the link above? 2) How to draw the dendrograms on the top and left of the colormap? I got hints from http://matplotlib.sourceforge.net/examples/axes_grid/scatter_hist.html on how to append axes to current plot, but I still have now idea how to draw the dengrograms. 3) How to draw the column side colormap (the smaller one) between the top dendrogram and the big colormap? 4) I can use colorbar to draw a colorbar, but how to place the colorbar on the topleft of the image just as the R heatmap does? 5) Any other suggestions on how to draw the heatmap? Thanks and any help will be greatly appreciated. Regards, Jianfeng 
From: Angus McMorland <amcmorl@gm...>  20110926 08:09:51

On 25 September 2011 06:59, fdu.xiaojf@... <fdu.xiaojf@...> wrote: > Dear all, > > Heatmap (like those on the page > http://www2.warwick.ac.uk/fac/sci/moac/students/peter_cock/r/heatmap/) > is a frequently used type of image in microarray data analysis. However, > it seems there are no convenient functions in matplotlib to plot heatmap > (please correct me if I was wrong), so I'm planning to write my own. > > Let me take the heatmap by the link > http://www2.warwick.ac.uk/fac/sci/moac/students/peter_cock/r/heatmap/scaled_color_key.png > as an example, which is produced by R. > > With my limited knowledge and expertise of matplotlib, I have the > following questions and I hope you guys could help me. > > 1) I tend to use pcolor to draw the colormap in the central area. > However, I've seen a lot of examples draw colormap with imshow. > > What's the difference between pcolor and imshow? > Shall I use pcolor or imshow to produce the heatmap in the link above? One difference between pcolor and imshow is that pcolor lines up the bottomleft corner of each square with the coordinates given, whereas imshow puts the grid center at those coordinates. My guess would be (not having implemented a heatmap) that pcolor would be the more useful to you to try first for this reason. > 2) How to draw the dendrograms on the top and left of the colormap? > > I got hints from > http://matplotlib.sourceforge.net/examples/axes_grid/scatter_hist.html > on how to append axes to current plot, but I still have now idea how to > draw the dengrograms. A quick google search suggests that scipycluster might help you out with the dendrogram drawing. I think I would try using separate axes objects for the heatmap and the dendrograms, and switch off the frames of the dendrogram axes. > 3) How to draw the column side colormap (the smaller one) between the > top dendrogram and the big colormap? This could another axes object too. You can use the sharex keyword to add_axes to get it to have the same x scale as the big axes. > 4) I can use colorbar to draw a colorbar, but how to place the colorbar > on the topleft of the image just as the R heatmap does? Again, the answer is to manually create the axes for your colorbar, and then specify those axes in the call to colorbar using the `cax` keyword. > 5) Any other suggestions on how to draw the heatmap? I suggest that you give it a try and post your efforts here if there are any problems. We'll also be keen to see the final result, if you'd like to share it. I hope that helps at least a little. Happy coding, Angus  AJC McMorland Postdoctoral research fellow Neurobiology, University of Pittsburgh 
From: <fdu.xiaojf@gm...>  20110929 11:49:52
Attachments:
text/plain

# * coding: utf8 * """ Created on Mon Sep 26 20:42:25 2011 http://stackoverflow.com/questions/5089030/howdoicreatearadialclusterlikethefollowingcodeexampleinpython colorbar: http://matplotlib.sourceforge.net/api/colorbar_api.html http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.colorbar http://matplotlib.sourceforge.net/examples/api/colorbar_only.html @author: Xiao Jianfeng """ import scipy import pylab import scipy.cluster.hierarchy as sch import scipy.spatial.distance as dist from matplotlib import mpl #def heatmap(x, colside_colors=None, rowside_colors=None): def heatmap(): """ x is a m by n ndarray, m observations, n genes """ x = scipy.rand(20, 30) #x = scipy.loadtxt("f:/learn/heatmap/tst.data") x = x*10 cmap=pylab.cm.YlGnBu norm = mpl.colors.Normalize(vmin=x.min(), vmax=x.max()) fig = pylab.figure(figsize=(8,8)) ## calculate positions for all elements # ax1, dendrogram 1, on the left of the heatmap [ax1_x, ax1_y, ax1_w, ax1_h] = [0.05,0.1,0.2,0.6] width_between_ax1_axr = 0.01 height_between_ax1_axc = 0.01 # axr, row side colorbar [axr_x, axr_y, axr_w, axr_h] = [0.31,0.1,0.02,0.6] axr_x = ax1_x + ax1_w + width_between_ax1_axr axr_y = ax1_y; axr_h = ax1_h width_between_axr_axm = 0.01 # axc, column side colorbar [axc_x, axc_y, axc_w, axc_h] = [0.4,0.63,0.5,0.02] axc_x = axr_x + axr_w + width_between_axr_axm axc_y = ax1_y + ax1_h + height_between_ax1_axc height_between_axc_ax2 = 0.01 # axm, heatmap for the data matrix [axm_x, axm_y, axm_w, axm_h] = [0.4,0.1,0.5,0.5] axm_x = axr_x + axr_w + width_between_axr_axm axm_y = ax1_y; axm_h = ax1_h axm_w = axc_w # ax2, dendrogram 2, on the top of the heatmap [ax2_x, ax2_y, ax2_w, ax2_h] = [0.3,0.72,0.6,0.2] ax2_x = axr_x + axr_w + width_between_axr_axm ax2_y = ax1_y + ax1_h + height_between_ax1_axc + axc_h + height_between_axc_ax2 ax2_w = axc_w # axcb [axcb_x, axcb_y, axcb_w, axcb_h] = [0.10,0.75,0.15,0.1] # Compute and plot left dendrogram. d1 = dist.pdist(x) D1 = dist.squareform(d1) # full matrix # postion = [left(x), bottom(y), width, height] ax1 = fig.add_axes([ax1_x, ax1_y, ax1_w, ax1_h], frame_on=True) # frame_on may be False Y1 = sch.linkage(D1, method='single') #Y = sch.linkage(D1, method='centroid') Z1 = sch.dendrogram(Y1, orientation='right') #ax1.set_xticks([]) #ax1.set_yticks([]) # Plot rowside colors # axr > axes for row side colorbar axr = fig.add_axes([axr_x, axr_y, axr_w, axr_h]) # axes for column side colorbar dr = scipy.random.randint(low=0, high=5, size=(x.shape[0], 1)) # there are two methods to generate discrete colormap: # matplotlib.cm.get_cmap() and mpl.colros.ListedColormap() #cmap_r = mpl.cm.get_cmap('hot', lut=5) cmap_r = mpl.colors.ListedColormap(['r', 'g', 'b', 'y', 'w']) im_c = axr.pcolor(dr, cmap=cmap_r) axr.set_xticks([]) axr.set_yticks([]) # Compute and plot top dendrogram. d2 = dist.pdist(x.T) D2 = dist.squareform(d2) ax2 = fig.add_axes([ax2_x, ax2_y, ax2_w, ax2_h], frame_on=True) Y2 = sch.linkage(D2, method='single') Z2 = sch.dendrogram(Y2) #ax2.set_xticks([]) #ax2.set_yticks([]) # Plot distance matrix. axm = fig.add_axes([axm_x, axm_y, axm_w, axm_h]) # axes for the data matrix idx1 = Z1['leaves'] idx2 = Z2['leaves'] xt = x[idx1,:] # xt is transformed x xt = xt[:,idx2] im = axm.pcolor(xt, cmap=cmap) axm.set_xticks([]) #fix_verts(ax1,1) #fix_verts(ax2,0) # Add text texts_row = [("%s_" % i)*4 for i in range(x.shape[0])] texts_col = [("%s_" % i)*4 for i in range(x.shape[1])] for i in range(x.shape[0]): axm.text(x.shape[1]+0.5, i, texts_row[idx1[i]]) for i in range(x.shape[1]): axm.text(i, 0.5, texts_col[idx2[i]], rotation=270, verticalalignment="top") # rotation could also be degrees # Plot colside colors # axc > axes for column side colorbar axc = fig.add_axes([axc_x, axc_y, axc_w, axc_h]) # axes for column side colorbar dc = scipy.random.randint(low=0, high=5, size=(1, x.shape[1])) # there are two methods to generate discrete colormap: # matplotlib.cm.get_cmap() and mpl.colros.ListedColormap() #cmap_c = mpl.cm.get_cmap('hot', lut=5) cmap_c = mpl.colors.ListedColormap(['r', 'g', 'b', 'y', 'w']) im_c = axc.pcolor(dc, cmap=cmap_c) axc.set_yticks([]) # Plot colorbar axcb = fig.add_axes([axcb_x, axcb_y, axcb_w, axcb_h], frame_on=False) # axes for colorbar cb = mpl.colorbar.ColorbarBase(axcb, cmap=cmap, norm=norm, orientation='horizontal') axcb.set_title("colorkey") cb.set_label("add label here") #axcb.set_xticks([]) #axcb.set_yticks([]) pylab.show() # if __name__ == '__main__': heatmap() 
Sign up for the SourceForge newsletter:
No, thanks