繁体   English   中英

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

[英]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"))

编辑解决方案

首先,聚合数据,以获得的比例ColourDateClass中的子集dfYear==2019和分别Year==2019 ; 将结果存储在df1996df2019

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM