R中具有叠加标准偏差曲线的多重直方图

R中具有叠加标准偏差曲线的多重直方图,r,plot,R,Plot,我想在R中绘制一个类似的直方图(如果可能的话,不需要安装额外的库) 图像应包含直方图、指示频率的标签、标准偏差曲线、平均线和指示标准偏差距离的线,例如+1,-1 SD处的红线、+2,-2 SD处的黄线和+3,-3 SD处的绿线 这是用于绘制多个直方图的代码,但无法绘制标准偏差曲线。引航标准偏差代码取自 库(xts) 维度=功能(df){ kk=dim(df)[2]; x=圆形(sqrt(kk),0); y=天花板(kk/x); 返回(c(x,y)) } 种子(3) Ex因此可以使用abline

我想在R中绘制一个类似的直方图(如果可能的话,不需要安装额外的库)

图像应包含直方图、指示频率的标签、标准偏差曲线、平均线和指示标准偏差距离的线,例如+1,-1 SD处的红线、+2,-2 SD处的黄线和+3,-3 SD处的绿线

这是用于绘制多个直方图的代码,但无法绘制标准偏差曲线。引航标准偏差代码取自

库(xts)
维度=功能(df){
kk=dim(df)[2];
x=圆形(sqrt(kk),0);
y=天花板(kk/x);
返回(c(x,y))
}
种子(3)

Ex因此可以使用
abline()
轻松添加标准偏差线。此外,根据Pascal的建议,使用
freq=FALSE
适当缩放y轴

for(i in names(df)){
  m[[i]]<-mean(df[[i]],na.rm=TRUE)
  std[[i]]<-sd(df[[i]],na.rm=TRUE)
  hist(df[[i]] , main="Histogram",xlab="x",col="green",label=TRUE,plot = TRUE, freq = F)  
  curve(dnorm(x, mean=m[[i]], sd=std[[i]]), col="darkblue", lwd=2, add=TRUE, yaxt="n")

  # Use abline 
  abline(v = m[[i]], lty = 2) 
  abline(v = m[[i]]+std[[i]], lty = 2)
  abline(v = m[[i]]-std[[i]], lty = 2)
  abline(v = m[[i]]+2*std[[i]], lty = 2)
  abline(v = m[[i]]-2*std[[i]], lty = 2)
}
for(名称中的i(df)){

m[[i]]只需阅读接受答案下方的注释,即在
hist
中将
freq
设置为
FALSE
for(i in names(df)){
  m[[i]]<-mean(df[[i]],na.rm=TRUE)
  std[[i]]<-sd(df[[i]],na.rm=TRUE)
  hist(df[[i]] , main="Histogram",xlab="x",col="green",label=TRUE,plot = TRUE, freq = F)  
  curve(dnorm(x, mean=m[[i]], sd=std[[i]]), col="darkblue", lwd=2, add=TRUE, yaxt="n")

  # Use abline 
  abline(v = m[[i]], lty = 2) 
  abline(v = m[[i]]+std[[i]], lty = 2)
  abline(v = m[[i]]-std[[i]], lty = 2)
  abline(v = m[[i]]+2*std[[i]], lty = 2)
  abline(v = m[[i]]-2*std[[i]], lty = 2)
}