[R] image/area plot

Marta Rufino mrufino at cripsul.ipimar.pt
Fri Jan 18 13:06:17 CET 2008


Dear R users,

I am trying to produce an image plot, that represents the proportions of 
a factor (z variable), so that the number of squares of each colour 
represents each factor level, with the respective label inside (sorry 
for the crap English).

# Something like this:

kk=data.frame(fact=letters[1:10], freq=c(5,1,10,2,10,7,5,10,30,20)) # 
factor and respective frequecies
res="a" # transform into a matrix (is there an easier way to do this?... 
for the image plot
for(ii in 1:dim(kk)[1]){
    res=c(res, rep(as.character(kk[ii,1]), l=kk[ii, 2]))
    }
res=res[-1]
res
res=matrix(c(factor(res)), nc=10)

image(x=1:10,y=1:10, res[,order(colSums(res))], col=rainbow(20))
abline(h=seq(0.5,10.5,1), col=8, lty=3); abline(v=seq(0.5,10.5,1), 
col=8, lty=3)#add some gridlines

#Problems:
#1. How to add the labels in each area
text(1,1,paste("Factor level",kk[1,1]), pos=4)

#2. How to separate the areas of each factor level (for BW printing), 
with lines (instead of colours as it is)
segments(.5,1.5,5.5,1.5, lwd=2);segments(5.5,.5,5.5,1.5, lwd=2) # 
something like this, but automatically :-(
 
#3. How to keep the areas together (contiguous) and not allow split over 
to lines?

#4. Could I replace the col. by a symbol, for example? I think I would 
need to use plot instead of image.
Any help will be much apretiated,

Thank you very much in advance,
Best wishes,
Marta
PS: This type of graphs are used in community ecology analysis, for 
example-...

-- 
.......................................................................
Marta M. Rufino (PhD)



More information about the R-help mailing list