对于称为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
。您将需要一个 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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句