在R中创建Barplot

时间:2014-02-15 15:00:50

标签: r bar-chart

我有以下类型的数据:

Model No.   Rank
1            1
2            2
1            1
3            1
1            2
2            2
3            2
1            3
2            1
2            2
3            3
3            3

现在我想要一个类似于下图的条形图:

enter image description here

我的图表有

  1. "型号"在x轴标签而不是"非吸烟者"和"吸烟者"
  2. 栏将是等级(即,等级1,等级2和等级3的单独栏)
  3. y轴将包含频率
  4. 图例将具有等级类别
  5. 因此,对于Model1:第一个柱将是等级1,y轴上的相应值将是2,因为模型1有两个等级1条目。对于模型2和3,类似的概念。

    如何在R?

    中实现这一目标

2 个答案:

答案 0 :(得分:3)

我会使用ggplot2重新制作好的情节输出

    require(ggplot2) 
    # creating sample data set | making it factors is crucial
    set.seed(1337) 
    model.no<-rep(1:4,each=5)
    rank<-sample(1:3,20,TRUE)
    dat<-data.frame(model.no=factor(model.no),rank=factor(rank))
    # Plot
    ggplot(data=dat, aes(model.no,fill=rank))+
      geom_bar(position="dodge") + xlab("Your x-label")+ylab("Your y-label")

这将为您提供以下输出 Barchart with ggplot

P.S .: 如果您不希望未使用等级的等级,请参阅以下两种方法: Don't drop zero count: dodged barplot

答案 1 :(得分:2)

set.seed(1)
mat <- matrix(sample(5:50, 15), 
              ncol=3, 
              nrow=5, 
              dimnames=list(paste("Rank", 1:5),
                            paste("Model", 1:3)))
barplot(mat,beside=TRUE,col=2:6, ylim=c(0,100)) 
legend("topright", legend=rownames(mat), fill=2:6))

enter image description here