最近,我已经熟悉了rstatix包。下面是使用此包中函数的示例代码。
library(tidyverse)
library(rstatix)
library(ggpubr)
set.seed(1111)
n=100
df = tibble(
x1 = rnorm(n, 0, 1.1),
x2 = rnorm(n, 0.2, .1),
x3 = rnorm(n, -.2, .2),
x4 = rnorm(n, 0, 2),
) %>% pivot_longer(x1:x4)
df
pwc = df %>%
pairwise_t_test(value~name, paired = TRUE,
p.adjust.method = "bonferroni") %>%
add_xy_position(x = "name") %>%
mutate(name=group1,
lab = paste(p, " - ", p.adj.signif))
res.test = df %>% anova_test(value~name)
df %>% ggplot(aes(name, value))+
geom_boxplot(alpha=0.6)+
stat_pvalue_manual(pwc, step.increase=0.05, label = "lab")+
labs(title = get_test_label(res.test, detailed = TRUE),
subtitle = get_pwc_label(pwc))但是,我注意到像get_test_label或get_pwc_label这样的函数并不返回文本,而是返回用于准备文本的命令。
例如,调用get_test_label(res.test, detailed = TRUE)提供如下内容:
paste("Anova, ", italic("F"), "(3,396)", " = ",
"5.26, ", italic("p"), " = ", "0.001",
paste(", ", eta["g"]^2, " = ", 0.04), "")反过来,调用get_pwc_label(pwc)将导致:
paste("pwc: ", bold(c(t_test = "T test")), "; p.adjust: ",
bold("Bonferroni"))现在我的问题基本上有两个问题。
为什么这些函数不返回文本,而是commands?
发布于 2021-11-15 09:45:01
R的图形设备使用?plotmath中定义的语法来区分文字文本和格式化文本。这种语法的一个基本特性是字符串定义文字文本,而函数定义对文本的操作,例如并置和格式化(更改字体、添加对话框、在数学公式中得到正确的空格等)。因此,您所看到的是定义格式化文本的函数和字符串的未评估组合。这些通常被称为plotmath表达式。
我可以为您提供一个基本示例,演示如何将不同的表达式转换为图形输出,但在R中有一个很好的示例:只需在交互式R会话中运行demo("plotmath")并按照提示操作即可。
您可以用来创建像您正在看到的表达式的函数包括quote、substitute、bquote和str2lang。您可能会使用其中之一来格式化,例如,一个情节标题。下面是如何使用每个函数生成表达式paste("Michaelis constant: ", italic("K")["M"], " = ", 0.015)。
quote(
paste("Michaelis constant: ", italic("K")["M"], " = ", 0.015)
)
substitute(
paste("Michaelis constant: ", italic(sym)[sub], " = ", val),
list(sym = "K", sub = "M", val = 0.015)
)
sym <- "K"
sub <- "M"
val <- 0.015
bquote(
paste("Michaelis constant: ", italic(.(sym))[.(sub)], " = ", .(val))
)
str2lang(
'paste("Michaelis constant: ", italic("K")["M"], " = ", 0.015)'
)这些差异是微妙的,因此值得浏览每个函数的帮助页面并在其中运行示例。
可用于创建表达式向量的函数包括expression和str2expression。您可以使用其中之一同时格式化一个或多个标签,例如,在定义轴勾标签时。下面是我如何使用每个函数在10倍的功率下格式化蜱的标签:
expression(10^0, 10^1, 10^2, 10^3, 10^4, 10^5)
str2expression(paste0(10, "^", 0:5))最后,下面是一个有趣的情节,将所有的东西组合在一起:
plot.new()
plot.window(c(0, 1), c(1, 100000), log = "y")
box()
title(main = quote(paste("Michaelis constant: ", italic("K")["M"], " = ", 0.015)))
axis(side = 2, at = 10^(0:5), labels = str2expression(paste0(10, "^", 0:5)), las = 1)
text(x = seq(0, 1, by = 0.2), y = 10^(0:5), labels = str2expression(sprintf('%s("%s")', c("plain", "bold", "italic", "bolditalic", "symbol", "underline"), month.abb[1:6])))关于更多的例子,请看一下?plotmath。
https://stackoverflow.com/questions/69874427
复制相似问题