我使用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