【问题标题】:R: How do I write "≥2: n=nrow(x)" in plot legend?R:如何在情节图例中写“≥2:n = nrow(x)”?
【发布时间】:2014-04-01 14:17:09
【问题描述】:

我正在绘制箱线图,但图例有问题。具体来说,我想写 "≥2: n=formatC(nrow(x))" 但不能组合 ≥ 符号的命令,计算 nrow(x)formatC(nrow(x), bigmark=",") 的函数应该给 nrow 编号千位分隔符。

到目前为止我尝试了什么:

smoke <- matrix(c(1:1200),ncol=1,byrow=TRUE)
colnames(smoke) <- c("High")
smoke <- as.table(smoke)

pdf('test.pdf')
plot(NA,xlim=c(0,100),ylim=c(0,100))
legend(10,70,bquote(paste(NA>=2, ": n=", .(formatC(nrow(smoke)), big.mark=","))))
dev.off()

给出:≥ 2: n=1200

我想要:≥2: n=1,200

似乎formatC在bquote下不起作用,我也想删除≥符号后的空格。

我也试过了:

legend(x,y, legend=c(expression(NA>=2), paste(": n=", formatC(nrow(smoke)), sep="")))

将图例分为两行: ≥ 2 : n=1200

paste 放在expression 之前会给出一行,但不会将>= 转换为≥。

我将图表导出为 pdf,目前适用于 ≥ 符号。我宁愿保留它。 Unicode 不适用于我手中的 pdf。

提前致谢, 菲利普

【问题讨论】:

    标签: r


    【解决方案1】:

    )smoke 之后的位置有误,因此它将 big.mark 参数作为 paste 的一部分,而不是 formatC。试试这个:

    legend(10,70,bquote(paste(NA>=2, ": n=", .(formatC(nrow(smoke), big.mark=",")))))
    

    【讨论】:

    • 非常感谢,我没有发现那个错误。还有没有办法去除≥和2之间的空间?
    • @user3485328 您可以通过使用paste0 而不是paste 或在paste 调用中指定sep = "" 来删除空格。
    • @user3485328 2 之间没有多余的空格。如果您只使用legend(10,70,bquote(3&gt;=2)),您会发现它只是常规空间。
    猜你喜欢
    • 2017-02-09
    • 2018-12-06
    • 1970-01-01
    • 2016-02-15
    • 2020-05-19
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多