[R] Plotting multiple curves with lattice graphs

Karen Chiswell karenc2204 at yahoo.com
Thu Apr 5 15:50:39 CEST 2007


Hi List,

I would like to plot multiple curves (parametric
density curves) in one plot.  

For example:
# parameters for three normal density curves
parms =
data.frame(ID=c(1,2,3),mu=c(50,55,60),sigma=c(10,12,15))

# I can easily draw three normal density curves using
curve():
curve(dnorm(x,mean=parms$mu[1],sd=parms$sigma[1]),from=0,
to=150, ylab="density", col="red")
curve(dnorm(x,mean=parms$mu[2],sd=parms$sigma[2]),from=0,
to=150, ylab="density", col="blue", add=TRUE)
curve(dnorm(x,mean=parms$mu[3],sd=parms$sigma[3]),from=0,
to=150, ylab="density", col="forestgreen", add=TRUE)

but I would like to use lattice graphics (even though
I only want one panel) because I want to save the
resulting plot in an object.
 
I could create a dataframe that contains the values I
want to plot, and then plot using xyplot().  For
example,

x = seq(from=0, to=150, length=100)
plot.df = data.frame(ID=rep(parms$ID,each=100),
x=rep(x,3),mu=rep(parms$mu,each=100),sigma=rep(parms$sigma,each=100))
plot.df$d =
dnorm(plot.df$x,mean=plot.df$mu,sd=plot.df$sigma)

require(lattice)
p=xyplot(d~x, data=plot.df, groups=ID, type="l")

However...  is there a more elegant/efficient way to
do this?  I have tried using the panel.curve panel
function (with xyplot() and histogram()), but I am not
very experienced with using panel functions (or R
actually), and I haven't had any success with this
yet.  

Many thanks for any suggestions,
Karen

-------------------------------
Karen Chiswell
Department of Statistics
North Carolina State University
-------------------------------



 
____________________________________________________________________________________
It's here! Your new message!  
Get new email alerts with the free Yahoo! Toolbar.



More information about the R-help mailing list