2010-08-10 3 views
20

Я новичок в 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

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

Спасибо.

ответ

29

Хотя легенда(), конечно, подходит для легенд, существует общее решение для всего текста. Фокус в том, что опция 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) 

для выравнивания вправо.

+3

Утверждение 'paste' прекрасно, но вы также можете добиться того же результата:' sprintf («Среднее =% 3.1f \ nMedian =% 3.1f \ nStd.Dev =% 3.1f", MyMean, MyMedian, MySd) ' – nullglob

12

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

Смежные вопросы