首页 > 解决方案 > r中的逐行条形图

问题描述

我最近拿起了 r 并且正在尝试一些数据可视化的代码。为了练习,我创建了一个小数据框来绘制数据并了解结果。

首先,我尝试绘制一个简单的向量,例如一周内的温度,并且功能 barplot 就像一个魅力。后来我继续绘制了一个简单的表格数据,显示了学生在 2 个科目中的分数,如下所示: stuname sub1 sub2 st1 rocket 95 70 st2 Ash 58 85

我在下面使用来创建数据框

plotdata=data.frame("stuname"=c("rocket","Ash"),
                    "sub1"=c(95,58),
                    "sub2"=c(70,85),
                    row.names = c("st1","st2"))

我在下面使用来绘制数据

barplot(as.matrix(plotdata[ ,2:3]), xlab = "Stu", ylab = "marks", beside = TRUE)

我认为这个要求足够基本,所以我还没有搬到 ggplot 。

这就是我得到的:

这就是我得到的

这是我所期待的:

这是我所期待和想要实现的

我的意思是,这就是我们通常想要的绘图方式,我们可以继续添加行数据,并且绘图可以继续增加,我看到一个数字可以获得特定学生的所有分数。

标签: rplotbar-chart

解决方案


仅分离数值并转置它们,以便它们按您想要的顺序绘制。请注意,如果您在不分离数值的情况下进行转置,它们可能会转换为character.

barplot(height = t(plotdata[c("sub1", "sub2")]),
        names.arg = plotdata$stuname,
        beside = TRUE)

在此处输入图像描述

我仍然建议使用ggplot它,因为它可以为您处理很多事情

library(reshape2)
library(ggplot2)
#Convert to long format
d = melt(plotdata, id.vars = "stuname")

ggplot(data = d,
       mapping = aes(x = stuname, y = value, fill = variable)) + 
    geom_col(position = position_dodge())

在此处输入图像描述


推荐阅读