首页 > 解决方案 > 如何使用 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 多列图,但它不适用于特定行。我想我用错误的方法来解决这个问题。还有其他更好的代码和方法吗?感谢您的回答和分享。

标签: rggplot2

解决方案


首先将您的数据转换为长格式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

在此处输入图像描述


推荐阅读