【问题标题】:Stacked bar chart in R [closed]R中的堆积条形图[关闭]
【发布时间】:2018-04-13 01:11:57
【问题描述】:

我有一个看起来像这样的数据集

我想绘制一个堆叠条形图,其中 X 是 Session,Y 是 Absent 和 Present,堆叠在一起。如何在ggplot()R 中做到这一点

【问题讨论】:

  • 你的代码尝试在哪里?
  • 欢迎来到stackoverflow。请参考ggplot 文档ggplot2.tidyverse.org。请尽量解决您的问题...
  • 很抱歉,我确实尝试了类似p <- ggplot(out, aes(Session)) + geom_bar() + geom_bar(aes(weight= Present)) + geom_bar (aes(fill= Absent)) 的各种方法,但我没有得到它。我认为回答它的人会给出一个全新的答案。并且粘贴我的非工作代码毫无意义。

标签: r ggplot2


【解决方案1】:

请查看如何就 SO 提出问题以及如何提供数据/示例。如果我们准备好所有信息,那么人们可以更轻松地为您提供帮助。

数据

我使用您的一些数据制作了一个表格:

library(tidyverse)

df <- tribble(~absent, ~present, ~total, ~session,
        15,8,3,'s1',
        12,11,23,'s2',
        12,10,23,'s4',
        14,9,23,'s5',
        18,5,23,'s6',
        17,6,23,'s7')

聚会

在制作图表方面,首先您需要通过调用gather 来组织数据,以便您可以将present/absent 变量传递给ggplot 中的fill 方法。

gather(df, key, value, -total, -session)

这样排列您的数据:

   total session key     value
   <dbl> <chr>   <chr>   <dbl>
 1    3. s1      absent    15.
 2   23. s2      absent    12.
 3   23. s4      absent    12.
 4   23. s5      absent    14.
 5   23. s6      absent    18.
 6   23. s7      absent    17.
 7    3. s1      present    8.
 8   23. s2      present   11.
 9   23. s4      present   10.
10   23. s5      present    9.
11   23. s6      present    5.
12   23. s7      present    6.

绘图

然后你可以调用ggplot创建一个柱形图,内容如下:

  ggplot(df, aes(x = session, y = value)) +
  geom_col(aes(fill = key))

【讨论】:

    猜你喜欢
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 2013-12-19
    相关资源
    最近更新 更多