【问题标题】:Bar chart in in ggplot stacked by two columns and dodged for another variableggplot中的条形图由两列堆叠并避开另一个变量
【发布时间】:2020-12-22 23:11:30
【问题描述】:

我有这个数据框。

df <- data.frame(Month = c(1,1,1,2,2,2,3,3,3,4,4,4), 
               Trials = c(20,20,20,30,30,30,50,50,50,60,60,60), 
               Subscribers = c(0,0,0,3,5,7,8,13,18,15,25,35),
               Scenario = c(1,2,3,1,2,3,1,2,3,1,2,3))
df$Scenario <- as.factor(df$Scenario)

我想创建一个条形图,以堆叠形式显示每个月的试用和订阅者的总和,我还希望每个场景的不同总和以闪避的形式显示。因此,每个月应该有 3 个条形图,每个场景一个。每个条都应该堆叠,有两种颜色,一种显示订阅者,另一种显示试用。如您所见,试验在不同场景中是固定的,因此对于每个条形,试验的彩色部分应该相同,而订阅者的彩色部分应该改变。

这是我目前所拥有的:

df %>% pivot_longer(Trials:Subscribers, "keys") %>%
ggplot(aes(x = Month, y = value, fill = Scenario)) + 
geom_bar(aes(group = keys), stat = "identity", position = position_dodge())

这不起作用。

有没有办法用 ggplot 实现这一点?谢谢

【问题讨论】:

    标签: r ggplot2 charts dplyr


    【解决方案1】:

    你可能想要一个多面图。

    library(ggplot2)
    library(dplyr)
    library(tidyr)
      df %>% 
        pivot_longer(Trials:Subscribers, "keys") %>%
        ggplot(aes(x = Scenario, y = value, fill = keys)) + 
        geom_bar(stat = "identity") +
        facet_grid(cols = vars(Month), labeller = label_both)
    

    【讨论】:

    • 谢谢你的作品!我的问题是更改的订阅部分位于底部,而试用版位于每个栏的上部。我该如何解决?
    猜你喜欢
    • 2021-07-31
    • 1970-01-01
    • 2021-12-15
    • 2014-10-31
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多