首页 > 解决方案 > 在 R 中使用三个分类变量绘制条形图

问题描述

我的数据框与此类似

df<-read.table (text=" Gender   Fruit   Food
Male    Pear    Yes
Female  Pear    Yes
Male    Grape   Yes
Female  Apple   No
Male    Grape   No
Male    Pear    No
Male    Guba    Yes
Male    Grape   No
Female  Apple   No
Female  Pear    Yes
Female  Apple   Yes
Male    Guba    No
Female  Guba    No
Male    Pear    Yes
Male    Apple   Yes
Male    Pear    No
Female  Pear    Yes
Male    Guba    No

", header=TRUE)

我想得到这样的条形图以及该图下的表格以显示数字:

在此处输入图像描述

在情节 G、A、G、P 中应为 Grape、Apple、Guba 和 Pear

如果我们可以在这个图下有一个表格来查看这些值,那就太好了。这已经在 Excel 中简单地完成了。

标签: rggplot2

解决方案


ggplot您需要将您感兴趣的每个变量映射到美学或方面。所以这样的事情可以工作:

ggplot(df) +
  geom_bar(aes(x=Fruit, fill=Food),
           position = "dodge") +
  facet_wrap(~Gender)

带有 3 个变量的条形图

要添加表格,您可以简单地单独计算它,然后将其转换为图形元素。

p_grph <- ggplot(df) +
  geom_bar(aes(x=Fruit, fill=Food),
           position = "dodge") +
  facet_wrap(~Gender)

p_table <- df %>%
  group_by(Gender, Fruit, Food) %>%
  summarize(count=n()) %>%
  gridExtra::tableGrob()

gridExtra::grid.arrange(p_grph, p_table)

绘制在顶部和下面的表格


推荐阅读