Выровнять текст внутри графика - PullRequest
23 голосов
/ 11 августа 2010

Я новичок в R и у меня был вопрос. Я пытаюсь поместить некоторый текст в сюжет R. Вот некоторый код, использующий набор данных яркости в пакете 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)))

Этот код выдает:

enter image description here

Проблема с этим выводом заключается в том, что текст не оставлен без выравнивания. Кто-нибудь знает, как сделать так, чтобы текст оставался выровненным?

Спасибо.

Ответы [ 2 ]

33 голосов
/ 11 августа 2010

Хотя легенда (), конечно, подходит для легенд, существует общее решение для всего текста. Хитрость в том, что опция pos не только устанавливает положение текста относительно текущего местоположения, но также устанавливает выравнивание. Выше и ниже выровнено по центру. Установка pos в 2 делает текст правильно выровненным. Когда он установлен справа от позиции (pos = 4), он выравнивается по левому краю.

Замените ваш текстовый код на ...

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

для выравнивания по левому краю и ...

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

за право оправдано.

12 голосов
/ 11 августа 2010

Попробуйте использовать legend() вместо 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")

Вам придется поиграться с регулировкой положения.Вы можете вообще не использовать координаты xy, а заменить эти два аргумента на "topleft"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...