首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >stat_summary表示带面的平均值

stat_summary表示带面的平均值
EN

Stack Overflow用户
提问于 2022-11-08 12:05:24
回答 1查看 51关注 0票数 0

在ggplot2中,我使用stat_summary()函数计算和绘制数据集的均值和标准差。我同时使用facet_wrap()将数据集分解成两个图。令我惊喜的是,将facet_wrap()添加到我的ggplot中会使stat_summary()被正确地独立地应用于数据的每个子集。

代码语言:javascript
运行
AI代码解释
复制
df>
| ID        | Group | Strain | Condition | DoublingTime    |
|-----------|-------|--------|-----------|-----------------|
| A_3g_Rep1 | A_3g  | A      | 3g        |     122.4135    |
| A_3g_Rep2 | A_3g  | A      | 3g        |     124.5801    |
| A_3g_Rep3 | A_3g  | A      | 3g        |     124.9419    |
| A_6g_Rep1 | A_6g  | A      | 6g        |     120.5004    |
| A_6g_Rep2 | A_6g  | A      | 6g        |     124.1666    |
| A_6g_Rep3 | A_6g  | A      | 6g        |     124.6453    |
| B_3g_Rep1 | B_3g  | B      | 3g        |     132.568     |
| B_3g_Rep2 | B_3g  | B      | 3g        |     137.5242    |
| B_3g_Rep3 | B_3g  | B      | 3g        |     135.5238    |
| B_6g_Rep1 | B_6g  | B      | 6g        |     137.1333    |
| B_6g_Rep2 | B_6g  | B      | 6g        |     142.733     |
| B_6g_Rep3 | B_6g  | B      | 6g        |     140.0722    |

首先,我使用以下方法正确计算平均值和标准差值。然而,它包括x轴上的组不存在于面中。

代码语言:javascript
运行
AI代码解释
复制
DT_plotA <- ggplot(df, aes(Group, DoublingTime)) +
  stat_summary(fun.data="mean_sdl", fun.args = list(mult=1),
               geom="errorbar", width=0.5) +
  stat_summary(fun=mean, geom="point", size=3) +
  facet_wrap(nrow = 1, .~Strain)

令我惊喜的是,在包含facet_wrap()的同时将aes() x值调整为条件会导致stat_summary()正确计算每个组的均值和标准差。

代码语言:javascript
运行
AI代码解释
复制
DT_plotB <- ggplot(df, aes(Condition, DoublingTime)) +
  stat_summary(fun.data="mean_sdl", fun.args = list(mult=1),
               geom="errorbar", width=0.5) +
  stat_summary(fun=mean, geom="point", size=3) +
  facet_wrap(nrow = 1, .~Strain)

然而,如果将facet_wrap从图中删除,stat_summary将根据条件计算平均值和标准差:来自独立菌株的数据被平均化。我担心这一警告会被遗忘,并导致删除方面时平均/sd的不正确计算。

代码语言:javascript
运行
AI代码解释
复制
DT_plotC <- ggplot(df, aes(Condition, DoublingTime)) +
  stat_summary(fun.data="mean_sdl", fun.args = list(mult=1),
               geom="errorbar", width=0.5) +
  stat_summary(fun=mean, geom="point", size=3)

问题

是否有一种方法可以生成一个看起来类似DT_plotB但包含aes(Group,DoublingTime)的绘图,如DT_plotA代码中所示?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-08 12:17:05

也许我们可以对数据进行预处理,->计算平均值和sd:

代码语言:javascript
运行
AI代码解释
复制
library(dplyr)
library(ggplot2)

df %>% 
  group_by(Strain, Condition) %>% 
  mutate(mean = mean(DoublingTime),
         sd = sd(DoublingTime)) %>% 
  ggplot(aes(x = Condition, y=mean)) +
  geom_point()+
  geom_errorbar(aes(ymin = mean-sd, ymax = mean+sd), width=.2)+
  facet_wrap(.~Strain)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74366545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档