如何在我的条形图误差条中使用 SE 代替 SD?另外,如何更改 x 轴组的顺序
How do I incorporate SE in place of SD in my bar chart error bars? Also, how do I change the order of my x-axis groups
我创建了一个条形图,显示狐猴群体在不同行为上花费的时间比例。但是我遇到了两个问题。
1) 我曾希望使用标准误差条代替我的标准偏差条。我不确定如何将它合并到我现有的代码中。
我当前的 ggplot 输出如下:
data_summary <- function(data, varname, groupnames){
require(plyr)
summary_func <- function(x, col){
c(mean = mean(x[[col]], na.rm=TRUE),
sd = sd(x[[col]], na.rm=TRUE),)
}
data_sum<-ddply(data, groupnames, .fun=summary_func,
varname)
data_sum <- rename(data_sum, c("mean" = varname))
return(data_sum)
}
df4 <- data_summary(mydata_bc, varname="Time",
groupnames=c("Group", "Behaviour"))
p <- ggplot(df4, aes(x=Behaviour, y=Time, fill=Group)) +
geom_bar(stat="identity", position=position_dodge()) +
geom_errorbar(aes(ymin=Time-sd, ymax=Time+sd), width=.2,
position=position_dodge(0.9))
2) 我也曾希望改变我在 x 轴上的行为顺序。
如有任何帮助,我们将不胜感激。
当前条形图
我的 csv 数据:https://drive.google.com/file/d/1UWJoluv3MWwXoQg2zcDORDJiWuIA8j4f/view?usp=sharing
我替换了:
sd = sd(x[[col]], na.rm=TRUE)
有:
se = sd(x[[col]], na.rm=TRUE) / sqrt(sum(!is.na(x[[col]])))
SD除以长度的平方根。
您的 data_summary 函数中还有一个额外的逗号。
您可以通过重新排序因子来更改列的顺序。
mydata_bc$Behaviour <- factor(mydata_bc$Behaviour, levels = c("Resting","Feeding","Socialising","Locomotion"))
然后就可以画图了
data_summary <- function(data, varname, groupnames){
require(plyr)
summary_func <- function(x, col){
c(mean = mean(x[[col]], na.rm=TRUE),
se = sd(x[[col]], na.rm=TRUE) / sqrt(sum(!is.na(x[[col]]))))
}
data_sum<-ddply(data, groupnames, .fun=summary_func,
varname)
data_sum <- rename(data_sum, c("mean" = varname))
return(data_sum)
}
mydata_bc$Behaviour <- factor(mydata_bc$Behaviour, levels = c("Resting","Feeding","Socialising","Locomotion"))
df4 <- data_summary(mydata_bc, varname="Time",
groupnames=c("Group", "Behaviour"))
p <- ggplot(df4, aes(x=Behaviour, y=Time, fill=Group)) +
geom_bar(stat="identity", position=position_dodge()) +
geom_errorbar(aes(ymin=Time-se, ymax=Time+se), width=.2,
position=position_dodge(0.9))
我创建了一个条形图,显示狐猴群体在不同行为上花费的时间比例。但是我遇到了两个问题。
1) 我曾希望使用标准误差条代替我的标准偏差条。我不确定如何将它合并到我现有的代码中。 我当前的 ggplot 输出如下:
data_summary <- function(data, varname, groupnames){
require(plyr)
summary_func <- function(x, col){
c(mean = mean(x[[col]], na.rm=TRUE),
sd = sd(x[[col]], na.rm=TRUE),)
}
data_sum<-ddply(data, groupnames, .fun=summary_func,
varname)
data_sum <- rename(data_sum, c("mean" = varname))
return(data_sum)
}
df4 <- data_summary(mydata_bc, varname="Time",
groupnames=c("Group", "Behaviour"))
p <- ggplot(df4, aes(x=Behaviour, y=Time, fill=Group)) +
geom_bar(stat="identity", position=position_dodge()) +
geom_errorbar(aes(ymin=Time-sd, ymax=Time+sd), width=.2,
position=position_dodge(0.9))
2) 我也曾希望改变我在 x 轴上的行为顺序。
如有任何帮助,我们将不胜感激。
当前条形图
我的 csv 数据:https://drive.google.com/file/d/1UWJoluv3MWwXoQg2zcDORDJiWuIA8j4f/view?usp=sharing
我替换了:
sd = sd(x[[col]], na.rm=TRUE)
有:
se = sd(x[[col]], na.rm=TRUE) / sqrt(sum(!is.na(x[[col]])))
SD除以长度的平方根。
您的 data_summary 函数中还有一个额外的逗号。
您可以通过重新排序因子来更改列的顺序。
mydata_bc$Behaviour <- factor(mydata_bc$Behaviour, levels = c("Resting","Feeding","Socialising","Locomotion"))
然后就可以画图了
data_summary <- function(data, varname, groupnames){
require(plyr)
summary_func <- function(x, col){
c(mean = mean(x[[col]], na.rm=TRUE),
se = sd(x[[col]], na.rm=TRUE) / sqrt(sum(!is.na(x[[col]]))))
}
data_sum<-ddply(data, groupnames, .fun=summary_func,
varname)
data_sum <- rename(data_sum, c("mean" = varname))
return(data_sum)
}
mydata_bc$Behaviour <- factor(mydata_bc$Behaviour, levels = c("Resting","Feeding","Socialising","Locomotion"))
df4 <- data_summary(mydata_bc, varname="Time",
groupnames=c("Group", "Behaviour"))
p <- ggplot(df4, aes(x=Behaviour, y=Time, fill=Group)) +
geom_bar(stat="identity", position=position_dodge()) +
geom_errorbar(aes(ymin=Time-se, ymax=Time+se), width=.2,
position=position_dodge(0.9))