我正在使用 ggstatsplot 制作许多类似的图,但每个图之间绘制的确切数据或变量会有所不同。我想将大部分(常量)参数分配给一个变量,我可以为每个图调用该变量。这样,如果我想更新所有图的参数,我只需要在一个地方更改它(即尽量不重复自己)。
根据这个StackOverflow解决方案,我尝试了两种方法。
第一次尝试:[编辑在 c() 内部添加 list(),这给出了与尝试 2 相同的错误]
Def_Args2 <- list(
pairwise.display = "significant",
plot.type = "box",
results.subtitle = FALSE, # Remove freq stat subtitle
violin.args = list(alpha = 0), # Remove violin
point.args = list(alpha = 0), # Remove points (unless can do beeswarm here?)
boxplot.args = list(notch = TRUE,
width = 0.4,
alpha = 0.5,
aes(fill = Treatment)
),
pairwise.comparisons = TRUE,
centrality.plotting = FALSE, # Don't plot mean
bf.message = FALSE # Remove Bayes stat subtitle
)
do.call(ggbetweenstats,
c(
list(
data = FluorByTreatment_Fltr_Iter3.tdf,
x = FluorByTreatment_Fltr_Iter3.tdf$Treatment,
y = FluorByTreatment_Fltr_Iter3.tdf$Area,
type = "parametric", # ANOVA or Kruskal-Wallis
var.equal = FALSE), # ANOVA or Welch ANOVA
Def_Args2
)
)
第二次尝试:
Def_Args1 <- list(
data = FluorByTreatment_Fltr_Iter3.tdf,
x = FluorByTreatment_Fltr_Iter3.tdf$Treatment,
y = FluorByTreatment_Fltr_Iter3.tdf$Area,
type = "parametric", # ANOVA or Kruskal-Wallis
var.equal = FALSE, # ANOVA or Welch ANOVA
pairwise.display = "significant",
plot.type = "box",
results.subtitle = FALSE, # Remove freq stat subtitle
violin.args = list(alpha = 0), # Remove violin
point.args = list(alpha = 0), # Remove points (unless can do beeswarm here?)
boxplot.args = list(notch = TRUE,
width = 0.4,
alpha = 0.5,
aes(fill = Treatment)
),
pairwise.comparisons = TRUE,
centrality.plotting = FALSE, # Don't plot mean
bf.message = FALSE # Remove Bayes stat subtitle
)
exec(ggbetweenstats, !!!Def_Args1)
两者都给出错误:
ensym(x) 中的错误
我的猜测是某些参数与这些输入法不兼容。我可以尝试其他输入法吗?还是我应该放弃希望?谢谢!
交叉发布于Reddit
您可以围绕
ggbetweestats()
编写一个接受的自定义函数
那些 ggbetweenstats()
的参数 - 随情节变化的参数
(数据,x,y,类型,var.equal)。其他参数可以硬编码到
功能。当您想要更改所有绘图的参数值时,可以修改函数代码。如果您后来发现想要更改某些
硬编码参数,您可以将它们作为参数添加到自定义函数中。
在下面的示例中,我添加了
pairwise.display
作为具有默认值的参数
值“显着”。这意味着如果您不指定该参数,它将
默认为“显着”,但如果您想更改某些图,
您可以在函数调用中指定另一个值(请参阅示例中的第二个 custom_ggbs()
调用。
由于您没有共享数据,所以下面的示例使用同名包中的
gapminder
数据集。
library(ggstatsplot)
library(gapminder)
custom_ggbs <-
function(data,
x,
y,
type,
var.equal,
pairwise.display = "significant") ggbetweenstats(
data = data,
x = {{x}},
y = {{y}},
type = type,
var.equal = var.equal,
pairwise.display = "significant",
plot.type = "box",
results.subtitle = FALSE,
violin.args = list(alpha = 0),
point.args = list(alpha = 0),
pairwise.comparisons = TRUE,
centrality.plotting = FALSE,
bf.message = FALSE
)
custom_ggbs(data = gapminder,
x = continent,
y = lifeExp,
type = "parametric",
var.equal = FALSE)
custom_ggbs(data = gapminder,
x = continent,
y = gdpPercap,
type = "parametric",
var.equal = FALSE,
pairwise.display = "all")