【问题标题】:row-wise bar plot in rr中的逐行条形图
【发布时间】:2019-08-12 19:23:14
【问题描述】:

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

首先,我尝试绘制一个简单的向量,例如一周内的温度,并且功能 barplot 就像一个魅力。 后来我继续绘制了一个简单的表格数据,其中包含 2 个科目的学生成绩,如下所示: stuname sub1 sub2 st1 火箭 95 70 st2 灰分 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。

这就是我得到的:

这是我所期待的:

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

【问题讨论】:

标签: r plot bar-chart


【解决方案1】:

仅分离数值并转置它们,以便它们按照您想要的顺序绘制。请注意,如果您在不分离数值的情况下转置,它们可能会被转换为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())

【讨论】:

  • 所以基本上我们转置数据使其成为列格式。您是否知道或可以将我引向任何来源,为什么这里缺少这样一个简单的实现,我的意思是这是绘制表格数据的默认期望
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多