2017-02-28 2 views
1

Ich möchte Ihre Hilfe, bitte.2 Y-Achse Histogramm (normale Frequenz vs relative Frequenz)

Ich habe diese 2 Plots, separat. Einer ist normale Frequenz und der andere, mit genau den gleichen Daten, ist für die relative Frequenz.

Können Sie mir sagen, wie kann ich sie in einem einzigen Grundstück mit 2 y-Achse verbinden (Frequenz und relativer Häufigkeit?)

x<- AAA$starch 
h<-hist(x, breaks=40, col="lightblue", xlab="Starch ~ Corn", 
    main="Histogram with Normal Curve", xlim=c(58,70),ylim = c(0,2500),axes=TRUE) 
xfit<-seq(min(x),max(x),length=40) 
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x)) 
yfit <- yfit*diff(h$mids[1:2])*length(x) 
lines(xfit, yfit, col="blue", lwd=3) 

frequency plot

library(HistogramTools) 
x<- AAA$starch 
c <- hist(x,breaks=10, ylab="Relative Frequency", main="Histogram with Normal Curve",ylim=c(0,2500), xlim=c(58,70), axes=TRUE) 
PlotRelativeFrequency((c)) 

relative frequency

Danke !!

EDIT:

Dies ist nur ein Beispiel Bild von dem, was ich will ...

2yaxisplot

+0

Ist das relativ Frequenz genau die gleichen Daten, geteilt durch die Summe _n_? Sind Sie sicher, dass Sie dafür eine separate Handlung benötigen? Vielleicht fügen Sie einfach eine zweite Y-Achse hinzu? – juod

+0

@joud. Ja, ich möchte ein einzelnes Diagramm mit beiden Informationen in verschiedenen y-Achse. –

Antwort

0

I doubleYScale von Paket latticeExtra verwenden. Hier

ist ein Beispiel (Ich bin nicht sicher über die relative Frequenzberechnung):

library(latticeExtra) 

set.seed(42) 
firstSet <- rnorm(500,4) 

breaks = 0:10 

#Cut data into sections 
firstSet.cut = cut(firstSet, breaks, right=FALSE) 
firstSet.freq = table(firstSet.cut) 

#Calculate relative frequency 
firstSet.relfreq = firstSet.freq/length(firstSet) 

#Parse to a list to use xyplot later and assigning x values 
firstSet.list <- list(x = 1:10, y = as.vector(firstSet.relfreq)) 

#Build histogram and relative frequency curve 
hist1 <- histogram(firstSet, breaks = 10, freq = TRUE, col='skyblue', xlab="Starch ~ Corn", ylab="Frequency", main="Histogram with Normal Curve", ylim=c(0,40), xlim=c(0,10), plot=FALSE) 
relFreqCurve <- xyplot(y ~ x, firstSet.list, type="l", ylab = "Relative frequency", ylim=c(0,1)) 

#Build double objects plot 
doubleYScale(hist1, relFreqCurve, add.ylab2 = TRUE) 

Und hier ist das Ergebnis mit zwei y-Achse mit unterschiedlichen Skalen:

Frequency histogram and relative frequency curve

+0

aber ich will nicht zwei Barplots. Ich möchte nur die Information über die relative Häufigkeit hinzufügen. Wenn ich die gleiche Anzahl von Unterbrechungen verwende, wird die Darstellung genau gleich sein, so würde ich auf der linken Seite die Frequenz und auf der rechten Seite die relative Häufigkeit sehen wollen. ist das möglich? –

+0

Ich glaube, ich verstehe dein Problem nicht. Ok, also die erste Handlung ist ein Histogramm. Der zweite ist auch ein Histogramm oder? Jetzt haben Sie drei Möglichkeiten: 1. Die Barplots sind gemischt (Lösung oben) 2. Sie fügen einen Offset zu den x-Werten zur relativen Häufigkeit hinzu, so dass das zweite Histogramm auf der rechten Seite ist 3. Sie machen zwei Diagramme – chateaur

+0

Frage bearbeitet mit einem Bild zu erklären, was ich versuche zu tun ... Danke. –