如何使用 ggplot2 删除 facet_wrap 图中的额外列?

How to remove extra column in facet_wrap plot with ggplot2?

我正在尝试使用 facet_wrap 和不平衡分组数据生成一个分面图,它提供了一个带有额外空白轴列的图。

如段落所示,我想生成一个没有最右边轴列的图。

这是一个示例代码:

library(ggplot2)
name <- c(factor(letters[1:4]),factor(LETTERS[1:3]))
room <- rep(c('A','B'),c(4,3))
goal <- c(rnorm(7,mean=60,sd=10))
test <- data.frame(name,goal,room) 
test %>% ggplot(aes(name, goal))+
  facet_wrap(~factor(room))+
  geom_bar(stat = "identity")

'scales="free"'方式:自动设置,可以手动设置吗?

facetted_pos_scales in ggh4x 由@teunbrand 开发解决了这个问题,thnaks!这里是补充代码:

library(ggh4x)

scales <- list(
  scale_y_continuous(limits = c(0, 100)),
  scale_y_continuous(limits = c(0, 80))
)

test %>% ggplot(aes(name, goal))+
  facet_wrap(~factor(room), scales="free")+
  geom_bar(stat = "identity")+
  facetted_pos_scales(y=scales)

更新操作评论: 这有帮助吗:您可以使用 coord_cartesian(ylim = c(0, 90)) 设置 ylim:

test %>% ggplot(aes(name, goal))+
  geom_bar(stat = "identity")+
  coord_cartesian(ylim = c(0, 100)) +
  facet_wrap(~factor(room), scales="free")

使用scales="free"代替scales="free_x"

library(ggplot2)
name <- c(factor(letters[1:4]),factor(LETTERS[1:3]))
room <- rep(c('A','B'),c(4,3))
goal <- c(rnorm(7,mean=60,sd=10))
test <- data.frame(name,goal,room) 
test %>% ggplot(aes(name, goal))+
  facet_wrap(~factor(room), scales="free")+
  geom_bar(stat = "identity")