web-dev-qa-db-fra.com

Aligner le texte à l'intérieur d'un tracé

Je suis un débutant R et j'avais une question. J'essaie de placer du texte dans un tracé R. Voici du code utilisant l'ensemble de données de luminosité dans le package UsingR.

    library(UsingR)
    brightness

    MyMean <- mean(brightness)
    MyMedian <- median(brightness)
    MySd <- sd(brightness)

    hist(brightness, breaks=35, main="This is a Histogram", 
         xlab="Brightness", ylab="Frequency", xlim=c(0,15), ylim=c(0, 200))

    text(3.5, 150, paste("Mean =", round(MyMean, 1), "\n Median =", 
         round(MyMedian, 1), "\n Std.Dev =", round(MySd, 1)))

Ce code produit:

enter image description here

Le problème avec cette sortie est que le texte n'est pas laissé aligné à gauche. Quelqu'un sait-il comment aligner le texte?.

Merci.

25
ATMathew

Bien que la légende () soit bien sûr appropriée pour les légendes, il existe une solution générale pour tout le texte. L'astuce est que l'option pos définit non seulement la position du texte par rapport à l'emplacement actuel, mais elle définit également la justification. Le dessus et le dessous sont justifiés au centre. Mettre pos à 2 rend le texte justifié à droite. Lorsqu'il est réglé à droite de la position (pos = 4), il est alors justifié à gauche.

Remplacez votre code texte par ...

text(1.5, 150, paste("Mean =", round(MyMean, 1), "\nMedian =", 
         round(MyMedian, 1), "\nStd.Dev =", round(MySd, 1)), pos = 4)

pour gauche justifié et ...

text(5.0, 150, paste("Mean = ", round(MyMean, 1), "\nMedian = ", 
        round(MyMedian, 1), "\nStd.Dev = ", round(MySd, 1), sep = ''), pos = 2)

pour droit justifié.

36
John

Essayez d'utiliser legend() au lieu de text()

legend(3.5, 150, legend = c(paste("Mean =", round(MyMean, 1)),
                            paste("Median =",round(MyMedian, 1)),
                            paste("Std.Dev =", round(MySd, 1))), 
                  bty = "n")

Vous devrez jouer avec l'ajustement de position. Vous pourriez envisager de ne pas utiliser du tout les coordonnées xy, mais de remplacer ces deux arguments par "topleft"

13
JoFrhwld