如何在R中将平均值添加到直方图?

19

我希望能绘制一张直方图,并标注平均值(例如我们可以用蓝色粗线标记)。

我尝试使用 plot 命令进行操作,但即使设置了参数 add=TRUE,也无法实现。

4个回答

30

您可以使用abline()在图中添加直线:

x <- rnorm(100)
mx <- mean(x)
hist(x)
abline(v = mx, col = "blue", lwd = 2)

另外,还可以查看?par获取图形参数(例如collwd)。


通常情况下,您也可以使用lines()绘制线条:

x <- rnorm(100, mean = 10)
mx <- mean(x)
hist(x)
lines(c(mx,mx), c(0,15), col = "red", lwd = 2)
lines(c(10, 11.5), c(0, 10), col = "steelblue", lwd = 3, lty = 22)
text(mx, 18 , round(mx, 2))
text(mx, 12 , "big", cex = 5)

text()用于添加文本,参数cex描述了“字符扩展因子”。

此外,请查看Quick-R,了解使用R进行基本绘图的概述。


14
hist(data)
abline(v=mean(data),col="blue")

8
如果您有更多列的数据帧,则使用ggplot2包是我的首选选择:
ggplot (data, aes (x = colname)) + geom_vline(xintercept=mean(data$colname), color="red")

Colname是您数据框中的列,您想绘制直方图和均值。


1
我遇到了一个问题,平均线没有出现,也没有任何错误信息来帮助我找出原因。后来我意识到是由于缺少数据,所以平均值被计算为NA。将na.rm = T添加到mean()参数中得到了一个真实的数字,平均线也出现了。这只是一个小疏忽和简单的修复,几乎不值得写,但我还是发帖分享,以防能够帮助到别人。
hist(data$Defect.rate, 
 xlim = c(0, 1),
 col = "light blue")

abline(v = mean(data$Defect.rate, na.rm = T),
            col = "red",
            lwd = 2)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接