如何为R中的绘图创建符号文本字符串

时间:2012-08-09 07:52:48

标签: r text plot expression symbols

我有一个情节,想在情节区域添加一些回归统计数据(例如F,R2,p)。我熟悉text(),但无法找到全面的信息来源,其中包含如何使用数学符号,子标题和上标等构建文本字符串的示例。任何具有详细示例的资源都非常受欢迎。

例如,我有一个简单的线性回归,我想从中提取统计数据并将其添加到我的情节中。例如

reg1 <- lm(WW1 ~ PC1, data = WW_Data)

我希望有F1,69 = 14.38, p = < 0.001, R2adj = 0.16之类的内容,其中“1,69”和“adj”是下标,“p”是斜体

修改

感谢@Backlin对我的问题给出了一个很好的答案。我已经扩展了一点,所以如果你得到一个非常重要的p值,代码会替换“&lt; 0.001”并将所有统计数据四舍五入到2位小数,除了我已经舍入为3的p值。

WW_Data <- data.frame(WW1=rnorm(10), PC1=1:10)
reg1 <- lm(WW1~PC1, WW_Data)
sreg1 <- summary(reg1)
plot(0, 0)
text(0, .2, eval(substitute(
    expression(list(F[list(fn,fd)]==fv,italic(p)==pv,R[adj]^2==R2adj)),
        list(fv = round(sreg1$fstatistic[1],2), fn = sreg1$fstatistic[2],
             fd = sreg1$fstatistic[3], pv = ifelse(sreg1$coefficients["PC1",4] < 0.001, "< 0.001",round(sreg1$coefficients["PC1",4],3)),
             R2adj = round(sreg1$adj.r.squared,2)))))

1 个答案:

答案 0 :(得分:3)

我自己也经常苦苦挣扎,但它实际上都在?plotmath。您的表达式如下,

# Fixed expression
text(x, y, expression(list(F[list(1,69)]==14.38,italic(p)<0.001,R[adj]^2==0.16)))

# Using the values of your lm
sreg1 <- summary(reg1)
text(x, y, eval(substitute(
    expression(list(F[list(fn,fd)]==fv,italic(p)==pv,R[adj]^2==R2adj)),
        list(fv = sreg1$fstatistic[1], fn = sreg1$fstatistic[2],
             fd = sreg1$fstatistic[3], pv = sreg1$coefficients["PC1",4],
             R2adj = sreg1$adj.r.squared))))

这是一个虚拟的例子。

WW_Data <- data.frame(WW1=rnorm(10), PC1=1:10)
reg1 <- lm(WW1~PC1, WW_Data)
sreg1 <- summary(reg1)
plot(0, 0)
text(0, .2, eval(...)) # The expression above

enter image description here