在r中绘制堆叠和分组的条形图

问题描述 投票:0回答:1

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

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

颜色年份DateClass

黑色1996 A

黑色2019 B

怀特1996 A

Black 1996 C

2019白色B

怀特1996 B

...等

我想将“头部颜色”绘制成白色/黑色与“年”和“日期类”的比例。我曾想过将条形图分组并堆叠黑白,但我不知道该怎么做。有什么建议么?您会以百分比或总数来绘制“颜色”堆栈吗?

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

r bar-chart binary-data categorical-data
1个回答
0
投票

这是您要寻找的吗?

DATA

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"))

SOLUTION

[首先,将数据汇总以按ColourYear获得DateClass的比例;将结果存储在df2中,并将数据帧转换为矩阵格式,这是堆叠条形图所必需的:

df2 <- aggregate(
  x = df[c("Year", "DateClass")],
  by = list(df$Colour),
  function(x) prop.table(table(x)))
df2 <- as.matrix(df2)
df2
     Group.1 Year.1996   Year.2019   DateClass.A DateClass.B DateClass.C
[1,] "Black" "0.6666667" "0.3333333" "0.3333333" "0.3333333" "0.3333333"
[2,] "White" "0.6666667" "0.3333333" "0.3333333" "0.6666667" "0.0000000"

现在绘制小节图(减去第一列:

barplot(df2[,-1], cex.names = 0.8, col = c("blue","red"))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.