我使用ggplot2
創建帶有標準偏差條的條形圖。我的數據幀是相當大的,但這裏是例如截短版本:如何將我的barplot中的標準偏差條限制爲最大值?
SampleName Target.ID Maj.Allele.Freq SD AVG.MAF
W15-P2-1 rs1005533 99.74811083 24.98883743 93.70753223
W15-P2-2 rs1005533 100 24.98883743 93.70753223
W15-P2-3 rs1005533 100 24.98883743 93.70753223
W15-P2-4 rs1005533 100 24.98883743 93.70753223
W15-P2-1 rs1005533 99.94819995 24.98883743 93.70753223
W15-P2-2 rs1005533 100 24.98883743 93.70753223
W15-P2-3 rs1005533 100 24.98883743 93.70753223
W15-P2-4 rs1005533 100 24.98883743 93.70753223
W21-P2-1 rs1005533 100 24.98883743 93.70753223
W21-P2-2 rs1005533 100 24.98883743 93.70753223
W21-P2-3 rs1005533 99.90044798 24.98883743 93.70753223
W21-P2-4 rs1005533 99.72375691 24.98883743 93.70753223
W21-P2-1 rs1005533 100 24.98883743 93.70753223
W21-P2-2 rs1005533 100 24.98883743 93.70753223
W21-P2-3 rs1005533 100 24.98883743 93.70753223
W21-P2-4 rs1005533 0 24.98883743 93.70753223
W15-P2-1 rs10092491 52.40641711 1.340954343 51.8604281
W15-P2-2 rs10092491 53.69923603 1.340954343 51.8604281
W15-P2-3 rs10092491 52.56689284 1.340954343 51.8604281
W15-P2-4 rs10092491 50.11764706 1.340954343 51.8604281
W15-P2-1 rs10092491 50.30094583 1.340954343 51.8604281
W15-P2-2 rs10092491 50.96277279 1.340954343 51.8604281
W15-P2-3 rs10092491 50.94102886 1.340954343 51.8604281
W15-P2-4 rs10092491 51.2849162 1.340954343 51.8604281
W21-P2-1 rs10092491 53.56976202 1.340954343 51.8604281
W21-P2-2 rs10092491 50.27861123 1.340954343 51.8604281
W21-P2-3 rs10092491 52.8358209 1.340954343 51.8604281
W21-P2-4 rs10092491 51.42585551 1.340954343 51.8604281
W21-P2-1 rs10092491 52.77890467 1.340954343 51.8604281
W21-P2-2 rs10092491 52.89017341 1.340954343 51.8604281
W21-P2-3 rs10092491 53.70786517 1.340954343 51.8604281
W21-P2-4 rs10092491 50 1.340954343 51.8604281
因爲在最後一列(AVG.MAF
)能產生標準差條超過最大的100的平均值,該圖顯示的條超出上的100
這裏y軸的極限是創建上述情節的代碼:
pe1 = ggplot(half1, aes(x=Target.ID, y=AVG.MAF))+
geom_bar(stat = "identity", position = "dodge", colour = "black",
width = 0.5, fill = "yellowgreen")+xlab("")+
ylab("Average Major Allele Frequency")+
labs(title="Allele Balance AmpliSeq Identity Sample P2")+
geom_errorbar(aes(ymin = AVG.MAF-SD, ymax = AVG.MAF+SD),
width = 0.4, position = position_dodge(0.9),
size = 0.6)+
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = .5))
我試圖截斷使用coord_cartesian
的情節,那種這使劇情看起來像我隱藏一些數據:
這裏是代碼來創建與標準差條情節切斷:
pe1 = ggplot(half1, aes(x=Target.ID, y=AVG.MAF))+geom_bar(stat = "identity", position = "dodge", colour = "black", width = 0.5, fill = "yellowgreen")+xlab("")+ylab("Average Major Allele Frequency")+labs(title="Allele Balance AmpliSeq Identity Sample P2")+geom_errorbar(aes(ymin = AVG.MAF-SD, ymax = AVG.MAF+SD), width = 0.4, position = position_dodge(0.9), size = 0.6)+theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = .5))+coord_cartesian(ylim=c(0,100))
似乎必須有一種方法來將標準偏差條限制爲我預期的ymax爲100,並且仍然保持頂部水平條在圖中可見。有誰知道如何做到這一點?
爲什麼要通過截斷標準開發欄的頂部來歪曲標準偏差? – Nate
'... geom_errorbar(aes(ymin = AVG.MAF-SD,ymax = pmin(AVG.MAF + SD,100)...'做你想做的事情?幾乎可以肯定的是, ,可能是因爲使用的基礎錯誤模型是不合適的 – Miff
@NathanDay和Miff你們都給了我一些想法,謝謝你們對你們的意見和可能的解決方案 – aminards