2016-03-23 6 views
1

Ich hoffe, die Frage wird korrekt gepostet. Es ist wahrscheinlich trivial, aber ich kann immer noch nicht antworten. Ich überprüfte mehrere Optionen, einschließlich der enthaltenen Informationen here, aber ohne Glück. Vielleicht bin ich immer noch nicht an Lattice-Befehle gewöhnt, oder das Problem ist eigentlich nicht relevant.Kurve zu Gitterbalkendiagramm hinzufügen

Ich würde ein Balkendiagramm mit einer Kurve überlappen, wie (sagen wir mal) eine normale Standardverteilungskurve oder die Dichteverteilung der Daten.

Bitte beachten Sie die folgenden Daten wie beispielsweise die Ergebnisse mehrerer Düsenrollen darstellen:

e11 <- data.frame(freq = rep(seq(1, 6, 1), c(53, 46, 42, 65, 47, 44))) 

plot_e11 <- barchart(e11, 
      horizontal = FALSE, 
      type = "density", 
      main = "Die results frequencies", 
      panel = function(x, ...){ 
        panel.barchart(x, ...) 
        panel.abline(densityplot(e11$freq))}) 
print(plot_e11a) 

Es gibt den normalen barchart anstelle des erwarteten Ergebnisses.

normal barchart

Wie kann ich eine Kurve nach barchart, wie das im folgenden Beispiel hinzufügen?

plot_e11b <- densityplot(e11$freq, 
        plot.points = FALSE) 

density plot

Antwort

1

panel.abline ist die falsche Panel-Funktion.

panel.abline fügt eine Zeile der Form y = a + b * x oder vertikale und/oder horizontale Linien.

densityplot(e11$freq, 
      panel=function(x, ...) { 
       tab <- table(x) 
       panel.barchart(names(tab), tab/length(x), 
          horizontal=FALSE)    
       panel.densityplot(x, plot.points=FALSE)}, 
      ylim=c(0, 0.3)) 

lattice plot

+0

Es funktioniert perfekt. Akzeptiert 'panel.density()' eine zweite Zeile? Um zum Beispiel einen Vergleich zwischen der Verteilung von 'e11 $ freq' und einer normalen Kurve zu erstellen? – Worice

+1

Sie können 'panel.mathdensity()' verwenden, um eine normale Kurve hinzuzufügen. – rcs

+0

Vielen Dank. – Worice