我目前正在尝试在R中绘制一些数据,但并没有成功。我的数据如下所示:
我的数据存储在名为“ Head”的数据框中:我的响应变量是一个只有两个级别(“黑色”和“白色”)的因子(称为“颜色”)我的第一个(也是主要的)解释变量是一个因子(称为“年份”,具有两个级别(“ 1996年”和“ 2019年”)。我的第二个解释变量是一个具有三个级别(“ A”,“ B”和“ C”)的因子(称为“ DateClass”)。因此数据集看起来像这样:
颜色年份DateClass
黑色1996 A
黑色2019 B
怀特1996 A
Black 1996 C
2019白色B
怀特1996 B
...等
我想将“头部颜色”绘制成白色/黑色与“年”和“日期类”的比例。我曾想过将条形图分组并堆叠黑白,但我不知道该怎么做。有什么建议么?您会以百分比或总数来绘制“颜色”堆栈吗?
谢谢您的回答,最好的问候
这是您要寻找的吗?
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:
[首先,将数据汇总以按Colour
和Year
获得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"))