首页 > 解决方案 > 考虑ggplot2中不同标准误差的剖面图

问题描述

我试图通过引入标准误差以及每个时间的平均值来制作剖面图。出于某种原因,假设标准误差每次都是相同的(如下所示,这是不正确的)。如何在下图中为每个时间引入正确的标准误差?

代码:

library(PMCMR)
library(ExpDes.pt)
library(RColorBrewer)
library(tidyverse)

t1=tapply(dados$RespostaForca, dados$Tempo, describe)[[1]]$se
t2=tapply(dados$RespostaForca, dados$Tempo, describe)[[2]]$se
t3=tapply(dados$RespostaForca, dados$Tempo, describe)[[3]]$se
t4=tapply(dados$RespostaForca, dados$Tempo, describe)[[4]]$se
t5=tapply(dados$RespostaForca, dados$Tempo, describe)[[5]]$se
###########################################
####### Different standard errors #########
###########################################
standterr=c(t1,t2,t3,t4,t5); standterr

[1] 0.4326902 0.6871646 0.8456485 0.8299386 0.6416116


interact <- dados %>%
  select(RespostaForca, Tempo, Grupos) %>%
  group_by(Grupos, Tempo) %>%
  summarise(Average = mean(RespostaForca),
            y_se = psych::describe(dados$RespostaForca)$se)
###########################################
############### Graph #####################
###########################################
x11()
graf=ggplot(interact, aes(x=Tempo, y=Average)) + 
  ggtitle("") + geom_point(col="black", size=2, aes(shape=Grupos)) +  
  geom_line(aes(color=Grupos),size=1.1) + 
  geom_errorbar(aes(ymin = Average-1.96*y_se, 
                    ymax = Average+1.96*y_se),
                width = .1) +
  labs(fill="Grupos: ", x="Tempo", 
                     y="Força de Retenção (N)") + scale_fill_manual(values = c("#1B9E77","#D95F02")) +
  theme(legend.title = element_text(size = 22),legend.text = element_text(size = 22),
        axis.text.x = element_text(color = "black", hjust=1),
        axis.title = element_text(size = 22),
        axis.text = element_text(size = 25)) 
graf+scale_color_manual(values=c("black","#D95F02", "#56B4E9"))

图片:

标签: rggplot2plotgraphics

解决方案


试试这个方法。该问题与使用dados$RespostaForca常量有关,而仅放置变量:

library(PMCMR)
library(ExpDes.pt)
library(RColorBrewer)
library(tidyverse)
#Data
dados <- read.delim('data.csv',stringsAsFactors = F,sep=';')
#Process
interact <- dados %>%
  select(RespostaForca, Tempo, Grupos) %>%
  group_by(Grupos, Tempo) %>%
  summarise(Average = mean(RespostaForca),
            y_se = psych::describe(RespostaForca)$se)
#Plot
ggplot(interact, aes(x=Tempo, y=Average)) + 
  ggtitle("") + geom_point(col="black", size=2, aes(shape=Grupos)) +  
  geom_line(aes(color=Grupos),size=1.1) + 
  geom_errorbar(aes(ymin = Average-1.96*y_se, 
                    ymax = Average+1.96*y_se),
                width = .1) +
  labs(fill="Grupos: ", x="Tempo", 
       y="Força de Retenção (N)") + scale_fill_manual(values = c("#1B9E77","#D95F02")) +
  theme(legend.title = element_text(size = 22),legend.text = element_text(size = 22),
        axis.text.x = element_text(color = "black", hjust=1),
        axis.title = element_text(size = 22),
        axis.text = element_text(size = 25)) +
  scale_color_manual(values=c("black","#D95F02", "#56B4E9"))

输出:

在此处输入图像描述


推荐阅读