2010-08-10 42 views
20

Tôi là một newbie R và có một câu hỏi. Tôi đang cố gắng để đặt một số văn bản vào một âm mưu R. Dưới đây là một số mã sử dụng tập dữ liệu độ sáng trong gói Sử dụng.Căn chỉnh văn bản bên trong một ô

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))) 

Mã này sản xuất:

enter image description here

Vấn đề với sản lượng này là các văn bản không phải là trái trái alligned. Có ai biết làm thế nào để làm cho văn bản còn lại alligned.

Cảm ơn.

Trả lời

29

Trong khi chú thích() phù hợp với truyền thuyết, có một giải pháp chung cho tất cả văn bản. Bí quyết là tùy chọn pos không chỉ đặt vị trí của văn bản có liên quan đến vị trí hiện tại mà còn đặt ra sự biện minh. Trên và Dưới đây là trung tâm hợp lý. Đặt vị trí thành 2 làm cho văn bản được chính xác. Khi nó được đặt ở bên phải của vị trí (pos = 4) thì nó được căn trái.

Thay code text của bạn với ...

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

cho hợp lý trái và ...

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

cho quyền biện minh.

+3

Câu lệnh 'dán' là tốt, nhưng bạn cũng có thể đạt được kết quả tương tự bằng cách:' sprintf ("Mean =% 3.1f \ nMedian =% 3.1f \ nStd.Dev =% 3.1f", MyMean, MyMedian, MySd) ' – nullglob

12

Hãy thử sử dụng legend() thay vì 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") 

Bạn sẽ phải chơi xung quanh với việc điều chỉnh vị trí. Bạn có thể xem xét không sử dụng tọa độ xy chút nào, nhưng thay thế hai đối số đó bằng "topleft"

Các vấn đề liên quan