如何将 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% 确定这是否是您要执行的操作,但您可以尝试使用 rows
和 cols
参数而不是公式表示法。
例如
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 在线,因此很难嵌入结果图,抱歉)
我想设计一个水平的 ggplot 条形图,在左轴上有 3 个组(国家、零售商和类别)。根据
我尝试了 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% 确定这是否是您要执行的操作,但您可以尝试使用 rows
和 cols
参数而不是公式表示法。
例如
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 在线,因此很难嵌入结果图,抱歉)