[BioC] [R] easier way to print heatmap on multiple pages?

Yannick Wurm yannick.wurm at unil.ch
Thu Apr 2 12:28:01 CEST 2009

quick reply to a post thats a few years old since I just struggled  
with the same issue:

to split a single heatmap with too many lines onto multiple pages (ie  
keeping text size readable), I ended up using the following trick:

1. create a huge pdf. eg one that is 8 pages tall:
	> pagesToOutputOn = 8
	> pdf(outputPath, paper="special",
		height=20.9/2.54 * pagesToOutputOn,
	# do your heatmap	
	> dev.off()

2. Use Tiler on the mac (I'm sure other tools exist), to cut your  
single big pdf into several pages




Jake Michaelson jjmichael <at> comcast.net writes:
> Hi All,
> I've worked on some code to take a heatmap with 1000 row entries, and
> split this up into 20 pages, each with 50 rows from the original
> heatmap.  I want to preserve the row order such that all 20 pages, if
> put together, would comprise the original heatmap.
> Here's what I've done:
> ##make the initial heatmap, with all 1000 rows and write it to an
> object 'heatAll'
> heatAll = heatmap.2(combined.int.top, col = cm.colors(256), trace =
> "none")
>   pdf(file="~/Desktop/Alfalfa-Ladak-StemV3.pdf", width=8, height=12,
> pointsize=4)
> for(i in 1:20){
>    selected = heatAll$rowInd[((i-1)*50):((i-1)*50+50)] ##get original
> row order in groups of 50
>    heatmap.2(combined.int.top[selected,], Rowv = FALSE, ##prevent row
> re-ordering
>    Colv=heatAll$colInd,
>    col=cm.colors(256),
>    trace="none", margins = c(9,8),
>    main=paste("page", i, sep=" "))
>   }
>   dev.off()
> I can't think of why this wouldn't work, but for some reason things  
> are
> completely out of order.  For example, the first page of the PDF shows
> many genes found at the bottom of the original heatmap, but in a
> different order.  Strange.
> So, have I made this insanely complicated?  Is there an easier, better
> way to print a large heatmap on multiple pages?
> Thanks in advance for any help.
> --Jake

More information about the Bioconductor mailing list