我尝试在同一平面上叠加两个直方图,但hist()中的选项Probability = TRUE(相对频率)对下面的代码无效 . 这是一个问题,因为两个样本具有非常不同的大小(长度(cl1)= 9和长度(cl2)= 339),并且,使用此脚本,我无法对两个直方图之间的差异进行视觉化,因为每个都显示频率 . 如何以相同的箱宽度重叠两个直方图,显示相对频率?
c1<-hist(dataList[["cl1"]],xlim=range(minx,maxx),breaks=seq(minx,maxx,pasx),col=rgb(1,0,0,1/4),main=paste(paramlab,"Group",groupnum,"cl1",sep=" "),xlab="",probability=TRUE)
c2<-hist(dataList[["cl2"]],xlim=range(minx,maxx),breaks=seq(minx,maxx,pasx),col=rgb(0,0,1,1/4),main=paste(paramlab,"Group",groupnum,"cl2",sep=" "),xlab="",probability=TRUE)
plot(c1, col=rgb(1,0,0,1/4), xlim=c(minx,maxx), main=paste(paramlab,"Group",groupnum,sep=" "),xlab="")# first histogram
plot(c2, col=rgb(0,0,1,1/4), xlim=c(minx,maxx), add=T)
cl1Col <- rgb(1,0,0,1/4)
cl2Col <- rgb(0,0,1,1/4)
legend('topright',c('Cl1','Cl2'),
fill = c(cl1Col , cl2Col ), bty = 'n',
border = NA)
在此先感谢您的帮助!
1 回答
当您在类直方图的对象(如c1)上调用plot时,它会调用直方图的S3方法 . 即,
plot.histogram
. 如果键入graphics:::plot.histogram
,则可以看到此函数的代码,您可以在?plot.histogram
下看到它的帮助 . 该函数的帮助文件指出:因此,当绘图呈现直方图时,它不使用先前指定的
probability
或freq
参数,它会尝试自己解决它 . 如果你在c1
内挖掘,它的原因很明显,它包含了绘图所必需的所有数据,但没有说明它应该如何渲染 .因此,解决方案是在运行绘图函数时重复参数
freq=FALSE
. 值得注意的是,freq=FALSE
有效,而probability=TRUE
则没有,因为plot.histogram
没有概率选项 . 所以,你的情节代码将是:这一切似乎都是R开发者的疏忽/特殊决定(或缺乏) . 值得赞扬的是,它是适当记录的,并非“意外行为”(尽管我当然没想到) . 我想知道应该报告这种奇怪的地方,如果应该报告的话 .