在 x 轴上具有不同列的 R 条形图

绝望

我是 r 的新用户(和 stackoverflow,请事先原谅我的格式)并且在制作条形图时遇到了麻烦(使用 ggplot,tidyverse 包)。

我需要制作一个条形图,其中 x 轴上有多个列和两个子组,y 轴上有一个平均值。

我的数据如下所示

# A tibble: 6 x 5
     Id Baseline  Tyr1  Tyr2 Time 
  <dbl>    <dbl> <dbl> <dbl> <chr>
1     1    0.536 0.172 0.141 pre  
2     2    0.428 0.046 0.084 post 
3     3    0.077 0.015 0.063 pre  
4     4    0.2   0.052 0.041 post 
5     5    0.161 0.058 0.039 pre  
6     6    0.219 0.059 0.05  post  

我想绘制一个条形图,其中 x 轴 = 基线、Tyr1、Tyr2 和时间子组,y 轴 = 平均值。我相信我可以使用填充功能来制作子组,但是,我找不到将所有列都放在 x 轴上的方法。

目标是让它看起来像下面这样(我不确定图片是否正在上传?):

乔治·萨瓦

实现这一点的最好方法是重新塑造你的数据集,然后用它position_dodge来分隔对应于不同时间的条形。所以:

library(ggplot2)
library(tidyr)
dat %>% 
  pivot_longer(cols=-c(Id,Time)) %>% 
  ggplot(aes(x=name, y=value, fill=Time, group=Time)) + 
    stat_summary(geom="col",width=0.8,position=position_dodge()) + 
    stat_summary(geom="errorbar",width=0.2,position=position_dodge(width=0.8))

在此处输入图像描述

还可以考虑添加数据点以提高透明度。如果您的读者能够看到各个点,他们将更容易理解数据并判断其含义:

dat %>% 
  pivot_longer(cols=-c(Id,Time)) %>% 
  ggplot(aes(x=name, y=value, fill=Time, group=Time)) + 
    stat_summary(geom="col",width=0.8,position=position_dodge()) + 
    stat_summary(geom="errorbar",width=0.2,position=position_dodge(width=0.8)) + 
    geom_point(position = position_dodge(width=0.8))

在此处输入图像描述

要了解重塑发生了什么,中间数据集如下所示:

> dat %>% 
+   pivot_longer(cols=-c(Id,Time)) 
# A tibble: 18 x 4
      Id Time  name     value
   <int> <chr> <chr>    <dbl>
 1     1 pre   Baseline 0.536
 2     1 pre   Tyr1     0.172
 3     1 pre   Tyr2     0.141
 4     2 post  Baseline 0.428
 5     2 post  Tyr1     0.046
 6     2 post  Tyr2     0.084
 7     3 pre   Baseline 0.077
 8     3 pre   Tyr1     0.015
 9     3 pre   Tyr2     0.063
10     4 post  Baseline 0.2  
11     4 post  Tyr1     0.052
12     4 post  Tyr2     0.041
13     5 pre   Baseline 0.161
14     5 pre   Tyr1     0.058
15     5 pre   Tyr2     0.039
16     6 post  Baseline 0.219
17     6 post  Tyr1     0.059
18     6 post  Tyr2     0.05

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章