2017-02-28 123 views
1

我想您的帮助,谢谢。2 Y轴直方图(正常频率VS相对频率)

我这2个地块,分别。一个是正​​常频率,另一个具有完全相同的数据,是相对频率。

你能告诉我怎样才能加入他们与2个y轴的一个图(频率和相对频率?)

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

谢谢!

编辑:

这只是我想要的一个示例图像...

2yaxisplot

+0

这是相对的频率只是相同的数据,除以总数_n_?你确定你需要一个单独的阴谋吗?也许只需添加第二个y轴? – juod

+0

@joud。 是的,我想要一个单一的情节与两个信息在不同的Y轴。 –

回答

0

我用doubleYScale从包latticeExtra。

下面是一个例子(我不知道相对频率计算):

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) 

这里是两个与Y轴不同尺度的结果:

Frequency histogram and relative frequency curve

+0

但我不想要两个壁炉。只是想添加关于相对频率的信息。如果我使用相同数量的休息,情节将完全相同,所以我想在左侧看到频率,在右侧看到相对频率。那可能吗? –

+0

我想我不明白你的问题。好吧,所以第一个情节是一个直方图。第二个也是直方图的权利? 现在你有三种可能性:1,混合水库是混合的(上面的解决方案)2,为相对频率增加一个x值的偏移量,这样第二个直方图就在右边3,你做两个地块 – chateaur

+0

解释我在做什么的图像...谢谢。 –