[英]Plotting a stacked and grouped barchart in r
我目前正在尝试在 R 中绘制一些数据,但并没有真正成功。 我的数据如下所示:
我的数据存储在一个名为“Head”的数据框中:我的响应变量是一个因子(称为“颜色”),只有两个级别(“黑色”和“白色”)我的第一个(也是主要的)解释变量是一个因子(称为“Year”,具有两个级别(“Year 1996”和“Year 2019”)。我的第二个解释变量是一个具有三个级别(“A”、“B”和“C”)的因子(称为“DateClass”)。所以数据集如下所示:
颜色年份日期类
黑色 1996 A
黑色2019 B
白色 1996 A
黑色 1996 C
白色2019 B
白色 1996 B
...等等
我想将“头部颜色”绘制为白/黑与“年份”和“日期类”的比例。 曾经想过分组条形图和黑白堆叠,但不知道怎么做。 有什么建议? 您会将“颜色”的堆栈绘制为百分比还是总计数?
谢谢你的回答,最好的问候
这是你想要的?
数据:
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"))
编辑解决方案:
首先,聚合数据,以获得的比例Colour
由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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.