web-dev-qa-db-fra.com

Comment ajouter la valeur moyenne à un histogramme dans R?

Je voudrais tracer un histogramme avec une valeur moyenne (moyenne) dessus (par exemple, nous pourrions le marquer avec une ligne bleue et en gras).

J'ai essayé de le faire en utilisant la commande plot, mais même si j'ai défini le paramètre add=TRUE ça n'a pas marché.

17
Mateusz Kędzior

Vous pouvez utiliser abline() pour ajouter des lignes à un tracé:

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

Jetez également un œil à ?par Pour les paramètres graphiques (comme col et lwd).


En général, vous pouvez également tracer des lignes à l'aide de 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() est utilisé pour ajouter du texte. L'argument cex décrit le "facteur d'expansion des caractères".

Jetez également un œil à Quick-R pour un aperçu du tracé de base avec R.

26
EDi
hist(data)
abline(v=mean(data),col="blue")
13
user554546

Si vous avez des trames de données avec plus de colonnes, l'utilisation du package ggplot2 est mon option préférée:

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

Colname est la colonne de votre data.frame pour laquelle vous souhaitez tracer l'histogramme et la moyenne.

6
MartinK

J'ai rencontré un problème où la ligne moyenne n'apparaissait pas et je n'ai reçu aucune erreur pour m'aider à comprendre pourquoi. J'ai réalisé que rien ne se passait parce que j'avais des données manquantes, donc la moyenne a été calculée comme NA. Ajouter na.rm = T à l'argument mean () m'a donné un nombre réel, et la ligne moyenne est apparue. C'est un petit oubli et une solution simple qui ne valent pas la peine d'être écrits, mais je le poste quand même au cas où cela pourrait sauver quelqu'un du chagrin.

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

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