尽管我已经搜索了网络和可用资源,但我似乎无法理解R需要堆叠条形图数据的方式。
我有以下数据
df<-c("III", "III", "I", "I", "I", "II", "I", "I", "I", "I", "I",
"II", "I", "I", "I", "I", "I", "I", "I", "II", "I", "III", "II",
"II", "III", "I", "II", "II", "I", "I", "IV", "I", "III", "I",
"III", "I", "I", "II", "I", "II", "II", "I", "II", "I", "II",
"II", "II", "II", "I", "I", "II", "I", "I", "I", "I", "I", "I",
"II", "II", "III", "I", "III", "I", "I", "I", "I", "II", "I",
"II", "III", "I", "I", "I", "I", "III", "II", "II", "I", "I",
"II", "I", "II", "III", "II", "III", "II", "III", "I", "III",
"III")
我想用I,II,III,IV的百分比创建单个条形堆叠条形图。我只能让R做以下
barplot(table(df)*100/90, col=c("white", "gray70", "gray40", "black"), ylim=c(0,100))
有没有什么方法可以让这个单条形条状的条形图?请仅限baseR解决方案。 感谢
答案 0 :(得分:3)
这是一个使用ggplot
的解决方案,它不需要数字向量/矩阵作为条形图的输入。
library(ggplot2)
ggplot(data.frame(df))+geom_bar(aes(x="df",fill=df),position="stack")
答案 1 :(得分:2)
这是一种可能性(灵感来自http://r.789695.n4.nabble.com/How-to-add-marker-in-Stacked-bar-plot-td4635946.html):
df<-c("III", "III", "I", "I", "I", "II", "I", "I", "I", "I", "I",
"II", "I", "I", "I", "I", "I", "I", "I", "II", "I", "III", "II",
"II", "III", "I", "II", "II", "I", "I", "IV", "I", "III", "I",
"III", "I", "I", "II", "I", "II", "II", "I", "II", "I", "II",
"II", "II", "II", "I", "I", "II", "I", "I", "I", "I", "I", "I",
"II", "II", "III", "I", "III", "I", "I", "I", "I", "II", "I",
"II", "III", "I", "I", "I", "I", "III", "II", "II", "I", "I",
"II", "I", "II", "III", "II", "III", "II", "III", "I", "III",
"III")
freq <- table(df)
df <- data.frame(names=names(freq), freq=as.vector(freq))
barplot(as.matrix(df[,2]), col=cm.colors(length(df[,2])), legend=df[,1], xlim=c(0,6), width=1)
答案 2 :(得分:1)
以下将为您工作,但它看起来不会很好
barplot(as.matrix(table(df)*100/90),
col=c("white", "gray70", "gray40", "black"),
ylim=c(0,100))