【问题标题】:Create Barplot in R在 R 中创建条形图
【发布时间】:2014-02-15 15:00:50
【问题描述】:

我有以下类型的数据:

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

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

我的图表会有

  1. x 轴标签上的“型号”而不是“非吸烟者”和“吸烟者”
  2. 这些条形将是等级(即,等级 1、等级 2 和等级 3 的单独条形)
  3. y 轴将包含频率
  4. 图例将具有等级类别

因此,对于模型 1:第 1 个条形将用于 1 级,y 轴上的相应值将是 2,因为模型 1 有两个 1 级条目。模型 2 和 3 的概念类似。

如何在 R 中实现这一点?

【问题讨论】:

    标签: r bar-chart


    【解决方案1】:

    我会推荐使用 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")
    

    这将为您提供以下输出

    附: 如果您不想降低未使用的等级,请在此处查看 2 种方法: Don't drop zero count: dodged barplot

    【讨论】:

    • 应该做些什么改变才能让我得到每列的排名比例而不是计数?
    • 在末尾添加aes(y= ..count../ sum(..count..) )geom_bar()+ scale_y_continuous(labels = percent_format())
    • 你的意思是 aes(y=count(Rank)/sum(count(model.no)) 吗?对不起,我是新手
    • geom_bar(position="dodge",aes(y= ..count../ sum(..count..) )) 代替 geom_bar(position="dodge") 应该可以工作
    【解决方案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))
    

    【讨论】:

    • 应该做些什么改变才能让我得到每列的排名比例而不是计数?
    • @darkage:您可以在barplot 之前添加mat &lt;- prop.table(mat, margin=2),例如绘制每个模型的比例。您还需要调整barplot 中的ylim 参数。
    猜你喜欢
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多