【发布时间】:2014-03-31 17:03:49
【问题描述】:
我尝试格式化在基本图形系统中创建的回归曲线的标签。基本上,这个标签从变量中提取斜率、截距和 r 平方值。一个例子如下:
plot(rnorm(10), type = "n", xlim = c(0, 100), ylim = c(0, 100))
text(x = 0, y = 100, adj = c(0, NA), bquote(paste(y == .(a) * x + .(b), ", R"^2 == .(r2))), cex = 0.7)
但是,这会生成一个看起来不太聪明的标签:
y = 1.159019x+-1.537708, R<sup>2</sup>=0.7924927
我想要的是将数字四舍五入到小数点后第二位,即,
y = 1.16x-1.54, R<sup>2</sup>=0.79
我在text() 和bquote() 的帮助文档中查找了它,但没有找到太多有用的信息。
我也尝试使用参数nsmall = 2 将.(a)、.(b) 和.(r2) 包装在format() 中,但没有成功。
有人可以帮我解决这个问题吗?非常感谢!
ps。我认为我的问题中有一个隐藏的任务。在上面的例子中,b 是负数。我知道我可能会在我的表达式中省略 "+" 运算符,只使用 b 的负号来加入我的等式。但是,如果我事先不知道b 的符号怎么办?有没有一种巧妙的方法来形成标签而不用if()检查这个,然后写两个非常不同的text()版本?再次感谢!
【问题讨论】:
标签: r plot label decimalformat