【发布时间】:2021-02-19 03:01:26
【问题描述】:
TL;DR:尝试使用循环函数在一张图中使用ggboxplot 创建多个箱线图(附图片)。目前为每个箱线图手动创建代码,然后使用ggarrange() 或par() 函数将它们绘制在一起。它有效,但正在寻找一种重复性较低的方式。
我想知道是否可以使用循环函数创建多个ggboxplots。我在 StackOverflow 上看到了多个回复/解决方案,但没有一个能完全准确地捕捉到我正在寻找的解决方案(或者通常不需要使用循环函数)。
我的数据如下所示:
# A tibble: 62 x 4
offer payoff partner_transfer round_type
<dbl> <dbl> <dbl> <chr>
1 40 126 66 actual
2 100 273 273 actual
3 0 100 0 actual
4 100 6 6 actual
5 25 99 24 actual
6 80 29 9 practice
7 100 45 45 practice
8 0 100 0 practice
9 25 99 24 practice
10 100 183 183 practice
# ... with 52 more rows
我想要得到的输出是这样的:
我可以通过运行多个代码,然后使用ggarrange() 函数将它们组合起来(如下):
box_offer <- ggboxplot(data = tg_proposer_split, x = "round_type", y = "offer",
fill = "round_type",
palette = "ucscgb",
ylab = "Offer (by A)", xlab = "Round Type",
add = "jitter",
shape = "round_type")
box_partner_transfer <- ggboxplot(data = tg_proposer_split, x = "round_type", y = "partner_transfer",
fill = "round_type",
palette = "ucscgb",
ylab = "Amount Transferred by Partner (Bot)", xlab = "Round Type",
add = "jitter",
shape = "round_type")
box_payoff <- ggboxplot(data = tg_proposer_split, x = "round_type", y = "payoff",
fill = "round_type",
palette = "ucscgb",
ylab = "Payoff (for A)", xlab = "Round Type",
add = "jitter",
shape = "round_type")
ggarrange(box_offer, box_partner_transfer, box_payoff,
labels = c("A", "B", "C"),
ncol = 2, nrow = 2)
我要解决的另一种方法是使用par() 函数(但要绘制手段)。图片在这里:
我使用的代码是:
par(mfrow = c(2,2))
plot_offer <- plotmeans( offer ~ round_type, data = tg_proposer_split,
xlab = "Round Type", ylab = "Offer (by A)",
main="Mean Plot with 95% CI")
plot_partner_transfer <- plotmeans( partner_transfer ~ round_type, data = tg_proposer_split,
xlab = "Round Type", ylab = "Amount Transferred by Partner (Bot)",
main="Mean Plot with 95% CI")
plot_payoff <- plotmeans( payoff ~ round_type, data = tg_proposer_split,
xlab = "Round Type", ylab = "Payoff (for A)",
main="Mean Plot with 95% CI")
虽然使用 ggarrange() 或 par() 可以满足我的需求,但这有点太麻烦了,因为有时我有超过 10 个列/变量要为其创建箱线图。因此,如果有一种更短的方法来获得我想要的输出而不会在我的代码中重复,我会尝试在这里找到一些运气。我不确定问题是否在于我组织数据集的方式使这个过程变得困难,但无论哪种方式,我都愿意接受不同的解决方案。
【问题讨论】: