Thank you very much for the help.
> kk=data.frame(fact=letters[1:10], freq=c(5,1,10,2,10,7,5,10,30,20)) > res <- rep(kk[[1]], kk[[2]]) > resmat <- matrix(c(res), 10) > image(1:10, 1:10, resmat, col=rainbow(20)) > grid(ncol(resmat), nrow(resmat)) > > Great! that is much better :-) Still,... any idea about how to rearrange the matrix, in a way that the area of each letter is together (for example, in the fig. area 'f' and 'e' were split into two lines :-( )? > ##1 > text(expand.grid(seq_len(ncol(resmat)), seq_len(nrow(resmat))), > as.character(res)) > Excelent, this is very interesting code. Still, I wanted to have only one legend in each area. > ##2 > pos <- lapply(apply(apply(resmat, 2, duplicated), 2, > function(x)which(!x)), append, 11) > for(j in 1:length(pos)){ > rect(pos[[j]]-.5, j-.5, pos[[j]]-.5, j+.5, lwd=2) > } > abline(h=c(seq(1.5, 5.5, by=1), 8.5), lwd=2) > > This is exactly it!!! > ##3 > plot(0, xlim=c(0,10), ylim=c(1, max(table(resmat))), type="n", xaxt="n") > tb <- table(resmat) > dis <- 0 > for(i in 1:10){ > rect(dis, seq(par("usr")[1], tb[i], by=1), dis+.8, seq(par("usr")[1], > tb[i], by=1)+1) > dis <- dis + 1 > } > axis(1, at=0.5:9.5, labels=LETTERS[1:10]) > What I meant was using the image plot (or something similar). Maybe it is easier to show some examples in the net:... here is an example: http://grammarpolice.net/archives/001387.php I guess this could be accomplished by re-ordering the matrix values, so that the values are not in rows but clustered into boxes, I guess... but how to do this? > ##4 > I think that symbols function should be useful > points(expand.grid(seq_len(ncol(resmat)), seq_len(nrow(resmat))), c(res)) #using your excelent code, I think this makes the job :-) Thank you very much, Best wishes, Marta > On 18/01/2008, Marta Rufino <[EMAIL PROTECTED]> wrote: > >> Yes, that is it, a square pie chart :-) I did not knew the name... sorry... >> >> Does anyone knows about it? >> Thank you very much, >> Best wishes, >> Marta >> >> hadley wickham wrote: >> >>> Do you have an example graphic that shows what you're trying to >>> create? I can't figure out if you want something like a square pie >>> chart (aka waffle chart), a stacked barchart, a levelplot, or >>> something else. >>> >>> Hadley >>> >>> On Jan 18, 2008 6:06 AM, Marta Rufino <[EMAIL PROTECTED]> wrote: >>> >>> >>>> 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) >>>> >>>> ______________________________________________ >>>> R-help@r-project.org mailing list >>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>> PLEASE do read the posting guide >>>> http://www.R-project.org/posting-guide.html >>>> and provide commented, minimal, self-contained, reproducible code. >>>> >>>> >>>> >>> >>> >>> >> -- >> ....................................................................... >> Marta M. Rufino (PhD) >> >> ..... >> Instituto Nacional de Investigação Agrária e das Pescas (INIAP/IPIMAR), >> Centro Regional de Investigação Pesqueira do Sul (CRIPSul) >> Avenida 5 de Outubro s/n >> P-8700-305 Olhão, Portugal >> +351 289 700 541 >> >> ..... >> Institut de Ciències del Mar - CMIMA (CSIC) >> Passeig Marítim de la Barceloneta, 37-49 >> 08003 BARCELONA - Catalunya >> Spain >> >> >> >> >> >> >> [[alternative HTML version deleted]] >> >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> >> >> > > > -- ....................................................................... Marta M. Rufino (PhD) ..... Instituto Nacional de Investigação Agrária e das Pescas (INIAP/IPIMAR), Centro Regional de Investigação Pesqueira do Sul (CRIPSul) Avenida 5 de Outubro s/n P-8700-305 Olhão, Portugal +351 289 700 541 ..... Institut de Ciències del Mar - CMIMA (CSIC) Passeig Marítim de la Barceloneta, 37-49 08003 BARCELONA - Catalunya Spain [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.