首页 > 解决方案 > 多面 ggplot 中的 ggstatsplot 字幕输出

问题描述

我正在尝试将grouped_ggbetweenstats()的输出添加到多面 ggplot。这个类似的问题在这里说这是不可能的,但我觉得响应者不太理解这个问题。

group_ggbetweenstats()有一个选项output = "subtitle",它不会产生一个图,而是产生一个表示统计测试输出的字符串,该输出将由grDevices::mtext()解释。然后可以将此文本作为标签提供给您正在分面的因素。谜题中唯一似乎缺失的部分是 grDevices 的评估。

下面的例子:

library(ggplot2)
library(ggstatsplot)
mtcars1 <- mtcars
statistics <- grouped_ggbetweenstats(data = mtcars1, x = cyl, y = mpg, grouping.var = am, output = "subtitle")
mtcars1$am <- factor(mtcars1$am, levels = c(0,1), labels = statistics)
mtcars1 %>%
  ggplot(aes(x = cyl, y = mpg)) +
  geom_jitter() +
  facet_wrap(vars(am), ncol =1, strip.position = "top")

这给出了:

阴谋

而我们想要的是看起来像这样的东西(除了刻面):

情节2

所以问题是:

  1. 是否有可能获得构面标签来解释 mtext() 指令
  2. 是否可以在绘图环境之外解释 mtext() 指令,然后将此解释的文本作为标签传递给 facet_wrap/grid
  3. 是否可以包含与标签分开的方面的副标题(如stat_compare_mean所做的)
  4. 其他...

标签: rggplot2facet

解决方案


您只需要在构面标签中解析这些表达式,就应该这样做:

set.seed(123)
library(ggplot2)
library(ggstatsplot)

# data
mtcars1 <- mtcars
statistics <- grouped_ggbetweenstats(data = mtcars1, x = cyl, y = mpg, grouping.var = am, output = "subtitle")
mtcars1$am <- factor(mtcars1$am, levels = c(0,1), labels = statistics)

# plot
mtcars1 %>%
  ggplot(aes(x = cyl, y = mpg)) +
  geom_jitter() +
  facet_wrap(vars(am), ncol =1, strip.position = "top", labeller = ggplot2::label_parsed) 

reprex 包(v0.3.0)于 2020-07-18 创建


推荐阅读