在绘图中对齐文本

28

我是一个R语言新手,有一个问题。我正在尝试将一些文本放入一个R图中,这里使用了UsingR包中的brightness数据集。

    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个回答

41

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

3
paste”语句可以,但您也可以通过以下方式实现相同的结果:“ sprintf(“Mean =%3.1f\nMedian =%3.1f\nStd.Dev =%3.1f”,MyMean,MyMedian,MySd)”。 - nullglob

14

尝试使用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" 替换这两个参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接