微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Iris 数据集中求均值和 sd 并绘制图形

如何解决在 Iris 数据集中求均值和 sd 并绘制图形

我需要找到 Iris 数据集中每个数字变量的均值和标准差,并使用 geom_col 和 geom_errorbar 在 ggplot2 图中绘制。

这是我目前得到的

library(tidyverse)
data(Iris)
iris %>% 
  group_by(Species) %>% 
    summarise_if(is.numeric,list(mean = mean,sd = sd)) -> IrisData

我试图创建一个图表,但我不知道如何使用 geom_errorbar

IrisData %>%
  select(Species,ends_with("mean")) %>%
  gather(key,val,2:5) %>%
  ggplot(aes(key,fill = Species)) +
  geom_col()

我发现它应该是这样的

geom_errorbar(aes(ymin = mean - sd,ymax = mean + sd),width=0.2)

但我不确定如何使用它,我将其添加代码末尾并得到了一些图表,但我确定它不正确

geom_errorbar(aes(ymin = val - sd(val),ymax = val + sd(val)),width=0.2,size = 1.2) 

解决方法

ggplot 默认不允许堆叠误差线。因此,您将不得不手动执行此操作 error bar with stacked barplot,这并不是那么好。如果你想实现它,你可以遵循this,否则你可以使用类似

library(tidyverse)
data(iris)

iris %>% 
  group_by(Species) %>% 
  summarise_if(is.numeric,list(mean = mean,sd = sd)) -> IrisData

iris %>% 
  pivot_longer(-Species) %>% 
  group_by(Species,name) %>% 
  summarise(Mean = mean(value),SD = sd(value)) -> IrisData

IrisData %>%
  ggplot(aes(name,Mean,fill = Species)) +
  geom_bar(stat = "identity",position = "dodge")+
  geom_errorbar(aes(ymin = Mean - SD,ymax = Mean + SD),width=0.2,position = position_dodge(.9))

enter image description here

library(ggpubr)
iris %>% 
  pivot_longer(-Species) %>% 
  ggbarplot(x = "name",y = "value",add = "mean_sd",color = "Species")

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。