I'm new to R but I've made numerous correlation plots with smaller data sets. However, when I try to plot a large dataset (2gb+), I can produce the plot just fine, but the legend doesn't show up. Any advice? or alternatives?
> r.cor <- cor(r)
> layout(matrix(c(1,1,1,1,1,1,1,1,2,2), 5, 2, byrow = TRUE))
> cx <- rev(colorpanel(25,"yellow","black","blue"))
> leg <- seq(min(r.cor,na.rm=T),max(r.cor,na.rm=T),length=10)
> image(r.cor,main="Correlation plot Normal/Tumor data",axes=F,col=cx)
> axis(1, at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[],
> axis(2,at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[],
Error in plot.new() : figure margins too large
> tmp <- round(leg,2)
> axis(1,at=seq(0,1,length=length(leg)), labels=tmp,cex.axis=1)
I suspect the problem is that the small figure region 2 created by your
layout() call is not sufficiently large enough to contain just the default margins, let alone a plot.
Before the line causing the problem try:
par(mar = rep(2, 4))
then plot the second image
You'll need to play around with the size of the margins on the
par() call I show to get this right. You may also need to increase the size of the actual device onto which you are plotting.
A final tip, save the
par() defaults before changing them, so change your existing
par() call to:
op <- par(oma=c(5,7,1,1))
then at the end of plotting do