[R] plotting histograms/density plots in a triangular layout?

Phil Spector spector at stat.berkeley.edu
Wed Nov 10 20:00:37 CET 2010


Karin -
    An example would have been nice.
    Perhaps this will be helpful:

> somedat = data.frame(x=sample(1:7,1000,replace=TRUE),
+                      y=sample(1:7,1000,replace=TRUE),
+                      z=rnorm(1000))
> somedat$grp = interaction(somedat$x,somedat$y)

Now we need to order the groups the way they need to be plotted:

> levs = paste(rep(1:7,1:7),unlist(sapply(1:7,function(x)1:x)),sep='.')
> levs
  [1] "1.1" "2.1" "2.2" "3.1" "3.2" "3.3" "4.1" "4.2" "4.3" "4.4" "5.1" "5.2"
[13] "5.3" "5.4" "5.5" "6.1" "6.2" "6.3" "6.4" "6.5" "6.6" "7.1" "7.2" "7.3"
[25] "7.4" "7.5" "7.6" "7.7"
> somedat$grp = factor(somedat$grp,levels = levs)

Of course, you're ordering may be different, but I don't know what 
the levels of your grouping factor are.

Now we can use the skip= argument to histogram to tell it which plots to
skip:

> chk = rep(rep(c(FALSE,TRUE),7),c(1,6,2,5,3,4,4,3,5,2,6,1,7,0))
> chk
  [1] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE
[13]  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE
[25] FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
[37] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[49] FALSE

> histogram(~z|grp,data=somedat,skip=chk,layout=c(7,7),as.table=TRUE)

I'm not sure what you mean by the legends, but maybe this will give you
a start.
 					- Phil Spector
 					 Statistical Computing Facility
 					 Department of Statistics
 					 UC Berkeley
 					 spector at stat.berkeley.edu




On Wed, 10 Nov 2010, Karin Lagesen wrote:

> Hi!
>
> I have a set of 49 pairwise comparisons that I have done. From this I would 
> like to plot either histograms or the density plots of the values I get. Now, 
> I can plot one histogram per comparison, but I have problems getting the 
> output I want. When plotting like I normally would do:
>
> histogram(~percid | orgA_orgB, data = alldata)
>
> I get the histograms next to eachother in a boxlike shape. However, since 
> these are pairwise ( 7x7 ) I would like to have them placed in a triangular 
> shape, like this:
>
>
> 1	x
> 2	x	x
> 3	x	x	x
> 	1	3	3
>
> where the Xes represent where I want plots, and the 1,2,3 represent the 
> legends.
>
> I have seen similar plots done by R, so I know it is possible, but the 
> question is how :D
>
> TIA,
>
> Karin
> -- 
> Karin Lagesen, Ph.D.
> Centre for Ecological and Evolutionary Synthesis (CEES)
> University of Oslo, Dept. of Biology
> P.O. Box 1066 Blindern 0316 Oslo, Norway
> Ph. +47 22844132 Fax. +47 22854001
> Email karin.lagesen at bio.uio.no
> http://folk.uio.no/karinlag
>
> ______________________________________________
> R-help at 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.
>



More information about the R-help mailing list