[R] Can't mix high level and low level plot functions.

Lothar Botelho-Machado r-help at botelho-machado.de
Mon Sep 25 19:56:52 CEST 2006


Hey R-Comunity,


I'd like to print out an histogram of some experimental data and add a
smooth curve of a normal distribution with an ideally generated
population having the same mean and standard deviation like the
experimental data.


The experimental data is set as vector x and its name is set to
group.name. I paint the histogram as follows:

hist(data, freq=FALSE, col="lightgrey", ylab="Density", xlab=group.name)



First I did the normal distribution curve this way:

lines(x, dnorm(x, mean=mean(x), sd=sd(x)), type="l", lwd=2)

This curve just uses as many values as there are in x. When using small
amounts of sample populations the curve looks really shaky.



I tried this one using a high level plot function as well:

curve(dnorm, n=10000, add=TRUE, xlim=range(x))

The advantage is, now I can set an ideal population of 10000 to get the
ideal curve really smooth. But the big disadvantage is, I don't know how
to add "mean=mean(x),  sd=sd(x)" arguments to it? It says that it can't
mix high level with low level plot functions when I try to set some kind
of parameter like "n=10000" to the low level function, it says that
there ain't enough x values.

So my question is, how to get a smooth curve placed of dnorm over an
histogram of sample data, ideally by using the curve method?


TIA,
Lothar Rubusch



More information about the R-help mailing list