Как добавить среднее значение к гистограмме в R? - PullRequest
15 голосов
/ 02 июля 2011

Я хотел бы построить гистограмму со средним (средним) значением (например, мы могли бы пометить ее синей и жирной линией).

Я пытался сделать это с помощью команды plot, нодаже если я установлю параметр add=TRUE, он не сработает.

Ответы [ 4 ]

23 голосов
/ 02 июля 2011

Вы можете использовать abline() для добавления линий на график:

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

Также посмотрите на ?par для графических параметров (таких как col и lwd).


Как правило, вы также можете строить линии, используя 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.

13 голосов
/ 02 июля 2011
hist(data)
abline(v=mean(data),col="blue")
6 голосов
/ 06 ноября 2013

Если у вас есть фреймы данных с большим количеством столбцов, использование пакета ggplot2 - мой предпочтительный вариант:

ggplot (data, aes (x = colname)) + geom_vline(xintercept=mean(data$colname), color="red")

Colname - это столбец в вашем data.frame, для которого вы хотите построить гистограмму и указать среднее значение.

1 голос
/ 19 мая 2017

Я столкнулся с проблемой, когда средняя линия не появлялась, и я не получил никакой ошибки, чтобы понять, почему.Я понял, что ничего не происходит, потому что у меня были некоторые пропущенные данные, поэтому среднее значение было рассчитано как NA.Добавление na.rm = T к среднему () arg дало мне реальное число, и появилась средняя линия.Это небольшой упущение и простое исправление, о котором вряд ли стоит писать, но я все равно выкладываю его на случай, если это может спасти кого-то от горя.

hist(data$Defect.rate, 
 xlim = c(0, 1),
 col = "light blue")

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