添加到hist() - 与plot()中的条形图

ECI*_*CII 3 plot r distribution histogram bar-chart

我想在已生成的plot()窗口上添加变量分布的直方图.这个脚本是大量定制的,我只能添加它.我不能hist()用来绘图.X轴是连续的,Y尺度是概率[0,1](编辑: y轴中的一个是另一个是连续的概率).如何添加条形来表示已生成的此变量的分布plot()?仅限Base-R

到目前为止我所做的是plot()然后进行分配lines(hist()$breaks, hist()$density, type="h"),但是我只给出了线条而不是盒子般的条形图hist()

从我的理解boxplot()不会有帮助,并barplot()要求因素不是连续的比例变量(像我一样).

更新:hist(...,add=T)选项对我不起作用.我希望在line()解决方案中具有灵活性(因此能够转换x和y向量),而不是用于绘制框的线条.有任何想法吗?

Did*_*rts 6

你的想法lines()可以工作但是你必须使用mids而不是x值的中断,并通过参数使你的线更宽lwd=.参数lend="butt"将确保线不圆.

set.seed(123)
x<-rnorm(100)
zz<-hist(x)

plot(x=c(-2.5,2.5),y=c(0,1),type="n")
lines(zz$mids, zz$density, type="h",lwd=50,lend="butt")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新

为了得到像盒子一样的东西(因为那些是你不能改变它们的线条)你可以用不同的颜色和不同的宽度绘制彼此上面的两条线,并且将所有密度值改变少量.

plot(x=c(-2.5,2.5),y=c(0,1),type="n")
lines(zz$mids, zz$density, type="h",lwd=50,lend="butt")
lines(zz$mids, zz$density-0.005, type="h",lwd=48,lend="butt",col="white")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


TMS*_*TMS 5

您只需使用即可将hist()绘图添加到现有绘图中add = TRUE.不要忘记用freq = FALSE你说你想要的概率尺度,而不是计数尺度.

set.seed(123)
x<-rnorm(100)

plot(x, exp(x)/(1+exp(x)), col = "green") # some plot
hist(x, freq = FALSE, add = TRUE)
Run Code Online (Sandbox Code Playgroud)

编辑:如果你需要对计算直方图执行任何操作,你可以hist通过将它分成计算和绘图本身来替换调用,这是使用rect()(参见源代码plot.histogram)完成的:

h <- hist(x, plot = FALSE) # computation
rect(h$breaks[-length(h$breaks)], 0, h$breaks[-1], h$intensities) # plotting
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述