26

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

此代码产生:

在此处输入图像描述

此输出的问题是文本未左对齐。有谁知道如何使文本左对齐。

谢谢。

4

2 回答 2

39

虽然 legend() 当然适用于图例,但对于所有文本都有一个通用的解决方案。诀窍在于 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)
于 2010-08-11T01:17:28.730 回答
13

尝试使用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"

于 2010-08-11T00:22:19.860 回答