apa_print() papaja 与 ggplot2 中的方程(标题)
apa_print() equations in papaja versus ggplot2 (title)
我在 R markdown(我喜欢)中使用 papaja 包。如果我这样做:
The test regression equation was: `r testregressionx1$full_result$modelfit$r2`
一旦我编织成 pdf(格式正确),我会得到这样的东西:
R 2 = .10, 90% CI [0.00, 0.45], F(1,10) = 1.07, 239, p = .326
但是,如果我尝试将该信息添加到 ggplot2 图标题中,如下所示:
+ggtitle(testregressionx1$full_result$modelfit$r2)
我得到这样的东西(不好):
R^2 = .10$, 90\% CI $[0.00$, [=14=].45]$, $F(1, 1 ...
如何在图中打印出与文本中相同的打印输出?还有,怎么才能只引用图中的r2和p-value呢?
papaja
生成可以被 RMarkdown 解释为 TeX 方程式的字符串(其中美元符号打开 TeX 中的 math
环境)。
据我所知,ggplot2
不理解 TeX 方程式。但是,您可以将 TeX 方程式转换为 R 表达式,例如使用 latex2exp
包,然后在你的 ggplot 中使用 R 表达式。
my_tex_expression <- "$R^2 = .146$"
library(ggplot2)
ggplot(npk) +
geom_point(aes(x = N, y = yield)) +
xlab(latex2exp::TeX(my_tex_expression))
output plot
在 Whosebug 上检查这个 post 可能也很有用:
putting mathematical symbols and subscripts mixed with regular letters in R/ggplot2
由于您没有提供可重现的示例,我将使用文档中的示例。
library("papaja")
ctl <- c(4.17, 5.58, 5.18, 6.11, 4.50, 4.61, 5.17, 4.53, 5.33, 5.14)
trt <- c(4.81, 4.17, 4.41, 3.59, 5.87, 3.83, 6.03, 4.89, 4.32, 4.69)
group <- gl(2, 10, 20, labels = c("Ctl", "Trt"))
weight <- c(ctl, trt)
lm_fit <- lm(weight ~ group)
lm_res <- apa_print(lm_fit)
正如 Marius 所指出的,您可以使用 latex2exp::TeX()
将 LaTeX 数学转换为 R 表达式。这里的问题是这个转换对于这个字符串不是完美的,所以它需要一些额外的格式:
# Escape brackets and remove backslash in front of percent sign
modified_r2 <- gsub("\]", "\\]",
gsub("\[", "\\[",
gsub("\\", "", lm_res$full_result$modelfit$r2)))
ggplot(data.frame(weight, group), aes(x = group, y = weight)) +
geom_point() +
ggtitle(TeX(modified_r2))
如果你只想要 R^2 和 p 值,你同样需要修改字符串。例如,
library("stringr")
modified_r2 <- paste0(
str_extract(lm_res$estimate$modelfit$r2, "\$R\^2 = \.\d\d\$"),
", ",
str_extract(lm_res$statistic$modelfit$r2, "\$p = \.\d+\$"))
我在 R markdown(我喜欢)中使用 papaja 包。如果我这样做:
The test regression equation was: `r testregressionx1$full_result$modelfit$r2`
一旦我编织成 pdf(格式正确),我会得到这样的东西:
R 2 = .10, 90% CI [0.00, 0.45], F(1,10) = 1.07, 239, p = .326
但是,如果我尝试将该信息添加到 ggplot2 图标题中,如下所示:
+ggtitle(testregressionx1$full_result$modelfit$r2)
我得到这样的东西(不好):
R^2 = .10$, 90\% CI $[0.00$, [=14=].45]$, $F(1, 1 ...
如何在图中打印出与文本中相同的打印输出?还有,怎么才能只引用图中的r2和p-value呢?
papaja
生成可以被 RMarkdown 解释为 TeX 方程式的字符串(其中美元符号打开 TeX 中的 math
环境)。
据我所知,ggplot2
不理解 TeX 方程式。但是,您可以将 TeX 方程式转换为 R 表达式,例如使用 latex2exp
包,然后在你的 ggplot 中使用 R 表达式。
my_tex_expression <- "$R^2 = .146$"
library(ggplot2)
ggplot(npk) +
geom_point(aes(x = N, y = yield)) +
xlab(latex2exp::TeX(my_tex_expression))
output plot 在 Whosebug 上检查这个 post 可能也很有用: putting mathematical symbols and subscripts mixed with regular letters in R/ggplot2
由于您没有提供可重现的示例,我将使用文档中的示例。
library("papaja")
ctl <- c(4.17, 5.58, 5.18, 6.11, 4.50, 4.61, 5.17, 4.53, 5.33, 5.14)
trt <- c(4.81, 4.17, 4.41, 3.59, 5.87, 3.83, 6.03, 4.89, 4.32, 4.69)
group <- gl(2, 10, 20, labels = c("Ctl", "Trt"))
weight <- c(ctl, trt)
lm_fit <- lm(weight ~ group)
lm_res <- apa_print(lm_fit)
正如 Marius 所指出的,您可以使用 latex2exp::TeX()
将 LaTeX 数学转换为 R 表达式。这里的问题是这个转换对于这个字符串不是完美的,所以它需要一些额外的格式:
# Escape brackets and remove backslash in front of percent sign
modified_r2 <- gsub("\]", "\\]",
gsub("\[", "\\[",
gsub("\\", "", lm_res$full_result$modelfit$r2)))
ggplot(data.frame(weight, group), aes(x = group, y = weight)) +
geom_point() +
ggtitle(TeX(modified_r2))
如果你只想要 R^2 和 p 值,你同样需要修改字符串。例如,
library("stringr")
modified_r2 <- paste0(
str_extract(lm_res$estimate$modelfit$r2, "\$R\^2 = \.\d\d\$"),
", ",
str_extract(lm_res$statistic$modelfit$r2, "\$p = \.\d+\$"))