微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有margint = TRUE的facet_grid的geom_col是否不能堆叠?

如何解决带有margint = TRUE的facet_grid的geom_col是否不能堆叠?

页边距中的小节似乎是在选择最大的构面,而不是像我期望的那样进行总结。

  • 他们不是应该在边缘堆积吗?
  • 这是一个错误吗?
  • 关于如何更改geom_col / geom_bar /位置设置或stat_function的任何建议?解决这个问题?
library(palmerpenguins); library(tidyverse); library(janitor)

penguins_raw %>%
  clean_names() %>%
  ggplot() +
  geom_col(aes(x = clutch_completion,y = body_mass_g,fill = sex),position = "dodge") +
  facet_grid(rows = vars(species),cols = vars(island),margins = TRUE)
#> Warning: Removed 8 rows containing missing values (geom_col).

reprex package(v0.3.0)于2020-10-11创建

编辑1:这是一些进一步的研究:如果我仅使用geom_col position = dodge而没有任何构面,则会得到以下结果。 dodge2向我们展示了它是相互叠加而不是堆叠在一起的,这就是为什么它看起来像最大值的原因?看起来堆叠的较大的躲避条似乎也没有拾取dodge2中显示的所有数据,但这可能是因为数据是如何分层的?

所以我的问题变成了:如何同时堆叠和躲避geom_col?

library(palmerpenguins,quietly = TRUE); library(tidyverse,quietly = TRUE); library(janitor,quietly = TRUE)
#> Warning: package 'palmerpenguins' was built under R version 3.6.3
#> Warning: package 'ggplot2' was built under R version 3.6.3
#> Warning: package 'tibble' was built under R version 3.6.3
#> Warning: package 'tidyr' was built under R version 3.6.3
#> Warning: package 'purrr' was built under R version 3.6.3
#> Warning: package 'dplyr' was built under R version 3.6.3
#> Warning: package 'forcats' was built under R version 3.6.3
#> Warning: package 'janitor' was built under R version 3.6.3
#> 
#> Attaching package: 'janitor'
#> The following objects are masked from 'package:stats':
#> 
#>     chisq.test,fisher.test
penguins_raw %>% clean_names() %>%
  ggplot() + 
  geom_col(aes(x = clutch_completion,col = sex),fill = "grey",position = "dodge") +
  geom_col(aes(x = clutch_completion,position = "dodge2")
#> Warning: Removed 2 rows containing missing values (geom_col).
#> Warning: Removed 2 rows containing missing values (geom_col).

reprex package(v0.3.0)于2020-10-11创建

解决方法

对于这个问题,可能有一个聪明的解决方案,但是也许可以针对您想做的事情进行调整?

options(scipen = 100000)
library(palmerpenguins); library(tidyverse); library(janitor)

penguins_raw %>%
  clean_names() %>%
  mutate(clutch_int = factor(str_replace(interaction(clutch_completion,sex),'\\.',' / '),ordered=TRUE)) %>% 
  ggplot() +
  geom_col(aes(x = clutch_int,y = body_mass_g,fill = sex),position = "stack") +
  theme(axis.text.x = element_text(angle = 75,hjust = 1)) +
  facet_grid(scales = "free",rows = vars(species),drop = FALSE,cols = vars(island),margins = TRUE)

example_image

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。