图例中的 R 平方和 n
R-squared and n in plot legend
我希望绘图图例包含 R 平方值和另一个值(数据点的数量,n,在这种情况下,但它不是特别重要)。我想要 R^2 = 格式的 R 平方,其中 R 是斜体,2 是上标。
可以在以下示例中使用 bquote
以这种方式单独添加 R 平方
DF <- data.frame(VAR1=rnorm(100), VAR2=rnorm(100))
with(DF, plot(VAR1, VAR2))
fit <- lm(VAR2 ~ VAR1, data=DF)
r2 <- summary(fit)$adj.r.squared
mylabel = bquote(italic(R)^2 == .(format(r2, digits = 2)))
legend("bottomright", legend = mylabel ) # display legend
可以通过以下方式添加 R 平方值和 n(感谢@DirkEddelbuettel How can I plot my R Squared value on my scatterplot using R?)
legend("topleft", legend = c( paste("R2 =", format(r2, digits = 2)),
paste("n = ", nrow(DF)) ) )
但是,我无法找到一种方法来修改此设置以不粘贴调用的方式格式化 R^2。例如,
legend("topleft", legend = c( expression(paste(italic(R)^2, " = ", format(r2, digits = 2))),
paste("n = ", nrow(DF)) ) )
将成功格式化 R^2 但也会粘贴 format(r2, digits = 2)
这似乎应该很简单,但我并不高兴。非常感谢任何帮助,谢谢。
这里有一个方法,使用 atop
分割成几行。
# your code
DF <- data.frame(VAR1=rnorm(100), VAR2=rnorm(100))
with(DF, plot(VAR1, VAR2))
fit <- lm(VAR2 ~ VAR1, data=DF)
r2 <- summary(fit)$adj.r.squared
mylabel = bquote(italic(R)^2 == .(format(r2, digits = 2)))
# the legend
legend("topright", legend=bquote(atop(italic(R)^2 == .(format(r2, digits = 2)),"n" == .(nrow(DF)))),bty="n")
请注意,我不得不删除图例 (bty=n"
) 周围的方框,因为它管理不善。
对于涉及 mtext
的另一个解决方案,您可能对堆栈上的另外两个 post 和那里的所有链接感兴趣:
Expression and new line in plot labels
Line break in expression()?
我希望绘图图例包含 R 平方值和另一个值(数据点的数量,n,在这种情况下,但它不是特别重要)。我想要 R^2 = 格式的 R 平方,其中 R 是斜体,2 是上标。
可以在以下示例中使用 bquote
DF <- data.frame(VAR1=rnorm(100), VAR2=rnorm(100))
with(DF, plot(VAR1, VAR2))
fit <- lm(VAR2 ~ VAR1, data=DF)
r2 <- summary(fit)$adj.r.squared
mylabel = bquote(italic(R)^2 == .(format(r2, digits = 2)))
legend("bottomright", legend = mylabel ) # display legend
可以通过以下方式添加 R 平方值和 n(感谢@DirkEddelbuettel How can I plot my R Squared value on my scatterplot using R?)
legend("topleft", legend = c( paste("R2 =", format(r2, digits = 2)),
paste("n = ", nrow(DF)) ) )
但是,我无法找到一种方法来修改此设置以不粘贴调用的方式格式化 R^2。例如,
legend("topleft", legend = c( expression(paste(italic(R)^2, " = ", format(r2, digits = 2))),
paste("n = ", nrow(DF)) ) )
将成功格式化 R^2 但也会粘贴 format(r2, digits = 2)
这似乎应该很简单,但我并不高兴。非常感谢任何帮助,谢谢。
这里有一个方法,使用 atop
分割成几行。
# your code
DF <- data.frame(VAR1=rnorm(100), VAR2=rnorm(100))
with(DF, plot(VAR1, VAR2))
fit <- lm(VAR2 ~ VAR1, data=DF)
r2 <- summary(fit)$adj.r.squared
mylabel = bquote(italic(R)^2 == .(format(r2, digits = 2)))
# the legend
legend("topright", legend=bquote(atop(italic(R)^2 == .(format(r2, digits = 2)),"n" == .(nrow(DF)))),bty="n")
请注意,我不得不删除图例 (bty=n"
) 周围的方框,因为它管理不善。
对于涉及 mtext
的另一个解决方案,您可能对堆栈上的另外两个 post 和那里的所有链接感兴趣:
Expression and new line in plot labels
Line break in expression()?