r - 如何使用 ggplot 在 R 中绘制特定行?
问题描述
我是 R 代码的新手,我正在做一个情节练习。我做了 40 个组的数据框测试,每个组有五个成员,每个成员都有一个数字,所以数据如下:
Group Member1 Member2 Member3 Member4 Member5
1 10 13 7 8 9
2 6 3 1 12 5
.
.
.
39 10 10 21 6 1
40 9 13 18 7 15
我想为包含所有成员的特定行绘制条形图,例如对于第 20 组,我想绘制:
Group Member1 Member2 Member3 Member4 Member5
20 5 7 12 29 4
我试过了:
ggplot(test,aes(x=Group,y=Member1)) + geom_bar(data=subset(test,Group==20),'identity')
或者
ggplot(subset(test,Group==20),aes(x=Group,y=Member1)) + geom_bar('identity')
他们两个都不正确,我应该使用 factor() 使列名成为因素吗?
我通过使用多个 +geom_line 或 geom_bar 将其组合在一起来绘制 sucu 多列图,但它不适用于特定行。我想我用错误的方法来解决这个问题。还有其他更好的代码和方法吗?感谢您的回答和分享。
解决方案
首先将您的数据转换为长格式pivot_longer
然后mutate
Member
考虑因素
然后filter
是所需的组
然后绘制
library(tidyverse)
df1 <- df %>%
pivot_longer(cols = -Group,
names_to = "Member",
values_to = "value"
) %>%
mutate(Member = as.factor(Member)) %>%
filter(Group == 1)
ggplot(data = df1, aes(x = Member, y=value)) +
geom_bar(stat="identity", color="blue", fill="white")
数据:
library(tidyverse)
df <- tribble(
~Group, ~Member1, ~Member2, ~Member3, ~Member4, ~Member5,
1, 10, 13, 7, 8, 9,
2, 6, 3, 1, 12, 5,
39, 10, 10, 21, 6, 1,
40, 9, 13, 18, 7, 15)
- 替代所有组
df2 <- df %>%
pivot_longer(cols = -Group,
names_to = "Member",
values_to = "value"
) %>%
mutate(Member = as.factor(Member),
Group = as.factor(Group))
p<-ggplot(df2, aes(x=Member, y=value, fill=Group)) +
geom_bar(position="dodge",stat="identity")+theme_minimal()
p
推荐阅读
- javascript - 防止在html输入字段react.js上输入键
- css - Bootstrap 4没有垂直居中
- android - 隐藏在 Android Studio 中的操作栏
- sql-server - SSMS 编辑单元格无法插入行 - 无效的 uuid - 如何将有效的 uuid 粘贴到编辑前 200 行的单元格中?
- docker - Kubernetes 对 docker 用户命名空间重映射的支持
- reactjs - React 将图像 src 作为对象返回
- python - 单击启用/禁用 WiFi 的 Python 脚本
- android - 每当单击单选按钮时更改单选组的选择
- r - R随机数发生器有故障?
- python - 在 django 中更改项目名称