[英]How to draw stacked barplot on the summed data
对于读取的名为df
数据:
car suv pickup
1 2 1
2 3 4
4 1 2
5 4 2
3 1 1
total = apply(df,1,sum)
barplot(total,col= rainbow(5))
所以我现在所做的是在汽车总数上绘制条形图,实际上是每行的总和。 我现在想要做的是将它呈现为总和上的堆栈条形图。
目前,它只会显示“总计”,而没有任何行表明 1 辆汽车、2 辆 suv、1 辆皮卡是否与 4 个“总计”相加。
笔记。 它与barplot(matrix(df))
,因为那只是将它除以我的汽车、SUV、皮卡,而忽略总数。
您可以使用ggplot2
和reshape2
轻松实现这reshape2
。 您将需要一个 ID 列来跟踪行,因此我已将其添加到其中。我将数据融合为长类型,以便可以相应地管理和绘制不同的组。 然后使用geom_bar
,将行 ID 指定为 x 轴,并指定堆栈图和图例的分组( fill
和colour
)。
library(reshape2)
library(ggplot2)
df <- data.frame("ID" = c(1,2,3,4,5), "car" = c(1,2,4,5,3), "suv" = c(2,3,1,4,1), "pickup" = c(1, 4, 2, 2, 1))
long_df <- df %>% melt(id.vars = c("ID") ,value.name = "Number", variable.name = "Type")
ggplot(data = long_df, aes(x = ID, y = Number)) +
geom_bar(aes(fill = Type, colour = Type),
stat = "identity",
position = "stack")
带基R
df %>% melt(id.vars = c("ID") ,value.name = "Number", variable.name = "Type") %>%
dcast(Type ~ ID, value.var = "Number") %>%
as.matrix() %>%
barplot()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.