在 r 中绘制堆叠和分组的条形图
Plotting a stacked and grouped barchart in r
我目前正在尝试在 R 中绘制一些数据,但没有真正成功。我的数据如下所示:
我的数据存储在一个名为 "Head" 的数据框中:
我的响应变量是一个只有两个水平("black" 和 "white")的因子(称为 "colour")
我的第一个(也是主要的)解释变量是一个因子(称为 "Year",具有两个水平("Year 1996" 和 "Year 2019")。
我的次要解释变量是一个因子(称为 "DateClass"),具有三个水平("A"、"B" 和 "C")。
所以数据集看起来像这样:
颜色年日期类
黑色 1996 A
黑色 2019 B
白色 1996 A
黑色 1996 C
白色 2019 B
白色 1996 B
...等等
我想绘制 "head colour" 作为 white/black 与 "Year" 和 "DateClass" 的比例。我曾想过分组条形图和黑白堆叠,但我不知道该怎么做。有什么建议么?你会将 "colour" 的堆栈绘制为百分比还是总计数?
感谢您的回答,祝好
这是您要找的吗?
数据:
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
by DateClass
在subsets of df
by 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")
我目前正在尝试在 R 中绘制一些数据,但没有真正成功。我的数据如下所示:
我的数据存储在一个名为 "Head" 的数据框中: 我的响应变量是一个只有两个水平("black" 和 "white")的因子(称为 "colour") 我的第一个(也是主要的)解释变量是一个因子(称为 "Year",具有两个水平("Year 1996" 和 "Year 2019")。 我的次要解释变量是一个因子(称为 "DateClass"),具有三个水平("A"、"B" 和 "C")。 所以数据集看起来像这样:
颜色年日期类
黑色 1996 A
黑色 2019 B
白色 1996 A
黑色 1996 C
白色 2019 B
白色 1996 B
...等等
我想绘制 "head colour" 作为 white/black 与 "Year" 和 "DateClass" 的比例。我曾想过分组条形图和黑白堆叠,但我不知道该怎么做。有什么建议么?你会将 "colour" 的堆栈绘制为百分比还是总计数?
感谢您的回答,祝好
这是您要找的吗?
数据:
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
by DateClass
在subsets of df
by 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")