dplyr/ggplot使用管道技术

3

有人能告诉我如何将以下dplyr代码与ggplot条形图集成吗? 我已经使它们分别工作,但每当我尝试将它们放在一起时,就会出现问题。

这是生成摘要表的dplyr代码(插入下面的脚本):

pop.2.df %>%
gather(key = "trial", value = 'capture','sco.1','sco.2', 'sco.3') %>% 
group_by(trial, capture) %>% summarise(n = n()) 

A tibble: 6 x 3
Groups:   trial [?] 
trial capture     n
  <chr>   <chr> <int>
1 sco.1       n    28
2 sco.1       y    94
3 sco.2       n    38
4 sco.2       y    84
5 sco.3       n    45
6 sco.3       y    77

这是产生条形图的ggplot代码,但是我只能在先从上面的脚本创建一个对象然后绘制才能使其工作。我希望在一段使用管道运算符的代码中全部完成:

 ggplot(data = pop.2.df.v2) + geom_bar(mapping = aes(x = trial, fill = capture), position = "dodge")

plot1


将数据放在代码中有助于您,您始终可以使用dput()函数。 - tjebo
管道操作符 %>% 无法与 your summarised data %>% ggplot() + etc 一起使用吗? - tjebo
我相信它应该可以工作……但我就是找不到正确的语法。 - Dasr
1个回答

1
您使用了错误的几何对象: geom_bar需要计数统计量。请改用geom_col。
your summarised data %>% ggplot() +geom_col(...)

谢谢。我真的不明白为什么它不能与geom_bar一起使用,因为在summarise之后,统计应该是count,不是吗?无论如何,我用以下方式使其按预期工作:pop.2.df %>% gather(key = "trial", value = 'capture', 'sco.1','sco.2', 'sco.3') %>% group_by(trial, capture) %>% summarise(count= n()) %>% ggplot() + geom_col(mapping = aes(x = trial, y = count, fill=capture), position = "dodge") - Dasr
不行,geom_bar需要在原始数据框中有东西可以计数,而不是已经计算过的值。geom_col使用给定的值。 - tjebo
1
你可以使用 geom_barstat = "identity",这基本上就是 geom_col - kath
以防万一,如果还有人在看这个问题。我发现你可以轻松地将数据框传递到管道中的任何参数位置(不仅仅是最初我认为的第一个位置)。在需要在传递数据框之前进行大量操作的情况下,这非常有用。请参见此示例:https://dev59.com/EqHia4cB1Zd3GeqPWJsX - Dasr
@Dasr 管道操作适用于许多对象,不仅限于数据框。请参阅此处的链接,这是一个非常好的管道操作介绍:https://dev59.com/I1gQ5IYBdhLWcg3wr17V - tjebo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接