[R] adding lines to multiple plot

Ben Bolker bolker at ufl.edu
Wed Jul 30 16:04:09 CEST 2008


Gary W <g.watmough <at> gmail.com> writes:

> 
> 
> Hi 
> 
> I am trying to add density lines to multiple histograms created using R.  I
> have managed to get all 18 lines on the last histogram in the series,
> however, i cannot figure out how to get each line appear on the correct
> histogram plot.  I know in Matlab there is a hold function, is there
> something similar in R? 
> 
> ##find unique column names in table 
> variablenames<-unique(names(variables)) 
> ## define number of unique names 
> Nvariables<-length(variablenames) 
> for(i in 1:Nvariables){ 
> par(mfrow=c(1,1),ask=TRUE) 
> } 

  previous loop is a little weird -- it has exactly the
same result as just running the command inside once.

Labeling with the numeric values is a bit of a pain.
If you don't need them you can just do

lapply(variables,
   function(v) {
      hist(v,prob=TRUE)
      lines(density(v),lwd=2)
   })

If you need the labels you can either do

mapply(function(v,i) {
   hist(v,prob=TRUE,main=paste("Histogram of",i),xlab=i)
      lines(density(v),lwd=2)
     },
     variables,
     1:Nvariables)

Or it might be easier to just do the whole thing with 
a for loop:

for (i in 1:Nvariables) {
  hist(variables[[i]],prob=TRUE,main=paste("Histogram of",i),xlab=i)
      lines(density(variables[[i]]),lwd=2)
}

  Ben Bolker



More information about the R-help mailing list