[英]How to plot mean values with standard deviation
我有一個看起來與此類似的數據框D:
Temp A B
14 10 14
14 11 13
14 12 15
14 14 18
16 18 17
16 20 17
16 22 18
16 22 17
18 25 25
18 26 27
18 28 26
18 26 28
每個溫度步驟始終有相同數量的值。
我想做的是:繪制每個溫度步驟的A和B的平均值和標准偏差。 是否可以在不細分數據幀的情況下這樣做? 非常感謝!
GGplot傾向於讓您以所需的聚合級別存儲長格式的數據。 因此,我首先將其融化,以使您的值位於一列中,然后使用data.table的語法創建包含您的均值和標准差的匯總數據集,然后融化該匯總,然后分別繪制平均溫度和標准差。
meltedTable = melt(table, id.vars = c("temp"))
summaryTemps = meltedTable[,list(Mean = mean(value), StandardDeviation = sd(value)), by = list(temp, variable)]
meanTemperatures = ggplot(summaryTemps) + geom_line(aes(x = summaryTemps$temp, y = summaryTemps$Mean, colour = summaryTemps$variable))
sdTemperatures = ggplot(summaryTemps) + geom_line(aes(x = summaryTemps$temp, y = summaryTemps$StandardDeviation, colour = summaryTemps$variable))
您還可以找到其他方法,請嘗試以下代碼:
df<-split(df,df$Temp)
df<-lapply(df,function(x){
A.mean<-mean(x[,1])
A.sd<-sd(x[,1])
B.mean<-mean(x[,2])
B.sd<-sd(x[,2])
x<-rbind(A.mean,A.sd,B.mean,B.sd)
x
}
)
df<-do.call("rbind",df)
df<-as.data.frame(df)
df$Variable<-rownames(df)
df$Count<-rep(1:(nrow(df))/4,each=4)
rownames(df)<-NULL
ggplot(df,aes(Count,V1))+geom_line+facet_wrap(~Variable,scales="free",ncol=2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.