【问题标题】:Plotting a stacked and grouped barchart in r在 r 中绘制堆叠和分组的条形图
【发布时间】:2020-03-16 16:48:08
【问题描述】:

我目前正在尝试在 R 中绘制一些数据,但并没有真正成功。我的数据如下所示:

我的数据存储在一个名为“Head”的数据框中: 我的响应变量是一个只有两个级别(“黑色”和“白色”)的因子(称为“颜色”) 我的第一个(也是主要)解释变量是一个因子(称为“年份”,有两个级别(“1996 年”和“2019 年”)。 我的次要解释变量是一个具有三个级别(“A”、“B”和“C”)的因子(称为“DateClass”)。 所以数据集看起来像这样:

颜色年份日期类

黑色 1996 A

黑色 2019 B

白色 1996 A

黑色 1996 C

白色 2019 B

白色 1996 B

...等

我想将“头部颜色”绘制为白色/黑色与“年份”和“日期等级”的比例。我曾想过一个分组的条形图并堆叠黑白,但我不知道该怎么做。有什么建议么?您会将“颜色”的堆叠绘制为百分比还是总数?

感谢您的回答,最好的问候

【问题讨论】:

标签: r bar-chart binary-data categorical-data


【解决方案1】:

这是你要找的吗?

数据:

df <- data.frame(Colour = c("Black", "Black", "White", "Black", "White", "White"),
                 Year = c(1996, 2019, 1996, 1996,2019, 1996),
                 DateClass = c("A", "B", "A", "C", "B", "B"))

编辑解决方案:

首先,对数据进行聚合,得到Colourby DateClass在df的子集中的比例,分别是Year==2019和Year==2019;将结果存储在df1996 和df2019:

df1996 <- aggregate(
  x = df$DateClass[df$Year==1996],
  by = list(df$Colour[df$Year==1996]),
  function(x) prop.table(table(x)))

df2019 <- aggregate(
  x = df$DateClass[df$Year==2019],
  by = list(df$Colour[df$Year==2019]),
  function(x) prop.table(table(x)))

现在使用两个面板布局并排绘制两个数据框:

par(mfrow = c(1,2))
barplot(df1996[,-1], cex.names = 0.8, col = c("blue","red"),
        main = "Black/White by DateClass in 1996", cex.main = 0.8,
        xlab = "1996", ylab = "Proportions")

barplot(df2019[,-1], cex.names = 0.8, col = c("blue","red"),
        main = "Black/White by DateClass in 2019", cex.main = 0.8,
        xlab = "2019", ylab = "Proportions")

【讨论】:

  • 您好,非常感谢您的意见。不幸的是,这并不完全是我想要的。我试图在这两年的三个日期类中都有黑色/白色的比例。非常感谢:)
  • 嗨,我已经编辑了解决方案。如果这是您的想法,请告诉我。
  • 哦,是的!这就是我要找的!非常感谢您的帮助!
  • 很高兴听到!请随意点击左上角的绿色刻度线来接受答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
相关资源
最近更新 更多