我正在制作一个情节,其中我从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")
现在我的问题是:如何摆脱酒吧内的这些线?我只是希望它是白色的黑色边框。我一直在尝试各种配置,我可以设法摆脱线条,但代价是拧紧方面。我相当肯定它与统计数据有关,但我不知道如何解决这个问题。有什么建议吗?
答案 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
。