一个酒吧堆积了barplot

时间:2014-06-10 10:33:03

标签: r graph plot

尽管我已经搜索了网络和可用资源,但我似乎无法理解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解决方案。 感谢

3 个答案:

答案 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))