r - 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 。
这就是我得到的:
这是我所期待的:
我的意思是,这就是我们通常想要的绘图方式,我们可以继续添加行数据,并且绘图可以继续增加,我看到一个数字可以获得特定学生的所有分数。
解决方案
仅分离数值并转置它们,以便它们按您想要的顺序绘制。请注意,如果您在不分离数值的情况下进行转置,它们可能会转换为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())
推荐阅读
- java - 如何使用 ojdbc8_g.jar 启用 JDBC 日志记录的堆栈跟踪
- java - SAP Hybris Commerce - 更改在线和离线目录会导致不同步
- php - 提交按钮不调用控制器功能 - Laravel
- javascript - SVG 箭头动画
- python - Python Bokeh 绘制静态辅助 y 轴
- android - 如何在android中适合Drawable对象的宽度和高度?
- reactjs - 是否可以通过使用 reactjs 给出 rows={3} 来拉伸输入字段
- c++ - 我该如何解决这个问题并调试它,因为我已经匹配了它
- c# - 无法在 dotnetcore 3.1 上的 linux 中运行 c# 应用程序
- stored-procedures - 我可以使用默认值在存储过程中进行插入吗?玛丽亚数据库