[英]stacked bar plot with error bars in R
我想繪制帶有誤差線的堆積條形圖。 我有一個帶有五個變量的數據框。 Var1包含處理對Var2
三個不同物種的影響。 治療效果以可變value
給出。 變量的start
和end
包含誤差線的值。 我想以一定的方式繪制堆疊的條形圖,以使Var1和Var2的順序相同。 像這樣:
這個數字只是一個例子。 一些示例數據:
Var1 Var2 value start end
Eff1 spe1 0.73 0.72 0.74
Eff2 spe1 0.25 0.24 0.26
Eff3 spe1 0.007 0.006 0.008
Eff1 spe2 0.69 0.68 0.7
Eff2 spe2 0 0 0
Eff3 spe2 0.3 0.29 0.31
Eff1 spe3 0.78 0.77 0.79
Eff2 spe3 0 0 0
Eff3 spe3 0.212 0.2 0.22
表中的值與上圖不匹配。 感謝您的建議。
df <- read.table(text="
Var1 Var2 value ybegin yend
Eff1 spe1 0.73 0.72 0.74
Eff2 spe1 0.25 0.24 0.26
Eff3 spe1 0.007 0.006 0.008
Eff1 spe2 0.69 0.68 0.7
Eff2 spe2 0 0 0
Eff3 spe2 0.3 0.29 0.31
Eff1 spe3 0.78 0.77 0.79
Eff2 spe3 0 0 0
Eff3 spe3 0.212 0.2 0.22", header = T)
str(df)
df[df$Var1 == "Eff2", "ybegin"] <- df[df$Var1 == "Eff2", "ybegin"] + df[df$Var1 == "Eff1", "value"]
df[df$Var1 == "Eff2", "yend"] <- df[df$Var1 == "Eff2", "yend"] + df[df$Var1 == "Eff1", "value"]
df[df$Var1 == "Eff3", "ybegin"] <- df[df$Var1 == "Eff3", "ybegin"] + df[df$Var1 == "Eff2", "ybegin"]
df[df$Var1 == "Eff3", "yend"] <- df[df$Var1 == "Eff3", "yend"] + df[df$Var1 == "Eff2", "yend"]
library(ggplot2)
dodge <- position_dodge(width = 0.9)
cols <- c("black", "white", "darkgrey")
limits <- aes(ymax = yend , ymin = ybegin)
ggplot(df, aes(x = Var2, y = value, fill = Var1)) + geom_bar(stat="identity", color = "black") +
scale_fill_manual(values = cols) +
geom_errorbar(limits, colour = "red", width = 1, position = dodge) +
theme_bw() +
theme(panel.grid.major = element_blank() ,panel.grid.minor = element_blank())
我認為,帶有錯誤欄的堆積條形圖不是最佳選擇。 為了進行比較,使用帶有錯誤欄的躲避條形圖的示例:
ggplot(df, aes(x=Var2, y=value, fill=Var1)) +
geom_bar(stat="identity", color="black", position=position_dodge(width = 0.9)) +
geom_errorbar(aes(ymax=yend, ymin=ybegin), width=0.6, position=position_dodge(width = 0.9)) +
theme_bw() +
theme(panel.grid.major.x = element_blank(), panel.grid.minor = element_blank())
結果是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.