对齐图中的文本

ATM*_*hew 24 text r text-alignment

我是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)))
Run Code Online (Sandbox Code Playgroud)

此代码生成:

在此输入图像描述

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

谢谢.

Joh*_*ohn 35

虽然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)
Run Code Online (Sandbox Code Playgroud)

左对齐和......

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

为了正当理由.

  • `paste`语句很好,但你也可以通过以下方式获得相同的结果:`sprintf("Mean =%3.1f \nMedian =%3.1f \nStd.Dev =%3.1f",MyMean,MyMedian,MySd) (3认同)

JoF*_*wld 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")
Run Code Online (Sandbox Code Playgroud)

你必须调整位置调整.您可能会考虑根本不使用xy坐标,而是将这两个参数替换为"topleft"