ggplot2条形图,内有条形图

时间:2017-05-24 08:37:50

标签: r ggplot2 violin-plot

我正在制作一个情节,其中我从facet_wrap获得了3x3网格。九个图中的八个使用geom_violin,而剩余的图使用geom_bar。在网站上找到一些有用的答案后,我得到了这一切。我遇到的问题是,当我使用fill = "white, color = "black"作为条形图时,它会在里面的条中绘制这些线条。

以下是一些示例代码和数据。

library(tidyverse)
n <- 100
tib <- tibble(value = c(rnorm(n, mean = 100, sd = 10), rbinom(n, size = 1, prob = (1:4)/4)),
              variable = rep(c("IQ", "Sex"), each = n),
              year = factor(rep(2012:2015, n/2)))
ggplot(tib, aes(x = year, y = value)) + 
  facet_wrap(~variable, scales = "free_y") +
  geom_violin(data = filter(tib, variable == "IQ")) +
  geom_bar(data = filter(tib, variable == "Sex"), stat = "identity", 
           color = "black", fill = "white")

enter image description here

现在我的问题是:如何摆脱酒吧内的这些线?我只是希望它是白色的黑色边框。我一直在尝试各种配置,我可以设法摆脱线条,但代价是拧紧方面。我相当肯定它与统计数据有关,但我不知道如何解决这个问题。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

我建议总结一下条形图中的数据:

ggplot(tib, aes(x = year, y = value)) + 
  facet_wrap(~variable, scales = "free_y") +
  geom_violin(data = filter(tib, variable == "IQ")) +
  geom_bar(data = tib %>%
             group_by(year,variable) %>%
             summarise(value=sum(value)) %>%
             filter(variable == "Sex"),
           stat = "identity", 
           color = "black",
           fill = "white")

答案 1 :(得分:3)

我不确定这是表示数据的好方法,不同面板的y轴表示非常不同的东西,但是接受您的示例可能与您的实际用例不匹配。制作单独的图表然后使用$script_insta_node = $dom->createElement('script'); $script_insta_node->setAttribute('async defer src', $instagram_js_path); gridExtra::grid.arrange可能是更好的解决方案。

但如果你想这样做

cowplot::plot_grid

使用ggplot(tib, aes(x = year, y = value)) + facet_wrap(~variable, scales = "free_y") + geom_violin(data = filter(tib, variable == "IQ")) + geom_col(data = filter(tib, variable == "Sex") %>% group_by(year, variable) %>% summarise(value = sum(value)), fill = "white", colour = "black") 而非geom_col,因此我无需使用geom_bar