Несколько графиков плотности для разных групп (на основе уровня фактора) с использованием plyr

Я пытаюсь вывести график с множественной плотностью из функции, разделив фрейм данных на части, чтобы разделить плотность для каждого уровня фактора для соответствующий yvar.

set.seed(1234)
Aa = c(rnorm(40000, 50, 10))
Bb = c(rnorm(4000, 70, 10))
Cc = c(rnorm(400, 75, 10))
Dd = c(rnorm(40, 80, 10))
yvar = c(Aa, Bb, Cc, Dd)
    gen <- c(rep("Aa", length(Aa)),rep("Bb", length(Bb)), rep("Cc", length(Cc)),
  rep("Dd", length(Dd)))
mydf <- data.frame(gen, yvar)

minyvar <- min(yvar)
maxyvar <- max(yvar)

par(mfrow = c(length(levels(mydf$gen)),1))

plotdensity <- function (xf, minyvar, maxyvar){
plot(density(xf), xlim=c(minyvar, maxyvar), main = paste (names(xf), 
  "distribution", sep = ""))
dens <- density(xf)
x1 <- min(which(dens$x >= quantile(xf, .80)))
x2 <- max(which(dens$x <  max(dens$x)))
with(dens, polygon(x=c(x[c(x1,x1:x2,x2)]), y= c(0, y[x1:x2], 0), col="blu4"))
abline(v= mean(xf),  col = "black", lty = 1, lwd =2)
}

require(plyr)
ddply(mydf, .(mydf$gen), plotdensity, yvar, minyvar, maxyvar)

Error in .fun(piece, ...) : unused argument(s) (111.544494112914)

Я ожидаю, что каждый график назван по имени уровня, например Aa, Bb, Cc, Dd Расположение графиков см. набор параметров, чтобы мы сравнивали изменения плотности и средние значения. компактный - мало места между графиками.

Помощь приветствуется.

Редактирование: Следующие графики создаются индивидуально, хотя я хочу разработать функцию, которая может быть применима к уровню x для фактора.

enter image description here

9
задан Reinstate Monica - G. Simpson 13 November 2011 в 21:17
поделиться