如何将 ggplot2 geom_col 与 facet_grid 和 coord_flip 一起使用

How to Use ggplot2 geom_col with facet_grid and coord_flip

我想设计一个水平的 ggplot 条形图,在左轴上有 3 个组(国家、零售商和类别)。根据 的灵​​感,我可以在 x 轴上进行设计,但是,当我随后应用 coord_flip 时,国家和零售商组仍保留在 x 轴上。请问如何也放在左边?

我尝试了 coord_flip(尝试 1)并在对 ggplot 的初始调用(尝试 2)中交换 x 和 y,但没有成功。最终这不需要在 ggplot 中,但我确实需要将它放在一个闪亮的应用程序中。

提前致谢。

library(ggplot2)
library(magrittr)
set.seed(1234)

countries  <- c('AU', 'NZ', 'UK', 'SA')
retailer   <- c(paste0('rtlr', 1:6))
categories <- c(paste0('cat', 1:4))

df <- tibble(
  countries    = sample(countries,  50, replace = T)
  , categories = sample(categories, 50, replace = T)
  , retailer   = sample(retailer,   50, replace = T)
  , n          = sample(1:200   ,   50, replace = T)
)

# Attempt 1

df %>%
  ggplot(aes(x = categories, y = n)) +
  geom_col(show.legend = F) +
  facet_grid(
    ~ countries + retailer
    , scales = 'free'
    , switch = 'x'
    , labeller = label_both
    ) +
  coord_flip()

 # Attempt 2
df %>%
  ggplot(aes(x = n, y = categories)) +
  geom_col(show.legend = F) +
  facet_grid(
    ~ countries + retailer
    , scales = 'free'
    , switch = 'x'
    , labeller = label_both
    )

不能 100% 确定这是否是您要执行的操作,但您可以尝试使用 rowscols 参数而不是公式表示法。

例如

df %>%
  ggplot(aes(x = categories, y = n)) +
  geom_col(show.legend = F) +
  facet_grid(
    rows = vars(countries, retailer) 
    , scales = 'free'
    , switch = 'x'
    , labeller = label_both
    ) +
  coord_flip()

(我无法访问我的电脑和 运行 R 在线,因此很难嵌入结果图,抱歉)