我正在使用 ggplot 绘制一些数据(x='filt' 和 y='flux'(显示在下面的代码中)以及上下对称误差线,它们在不同的文件中提供。
问题是一些的错误值对应于“-1”,实际上是上限。我完全不知道使用 ggplot 绘制上限。
所以,到目前为止,我只是将 -1 替换为 0.0,这让我可以绘制其他误差线,这是我的程序:
skipped few lines
带有过滤通量数据的数据文件:
data_flux<-melt(dflux,id="filt",variable.name ="objs",value.name="flux")
带有错误信息的数据文件:
d2[d2==-1.0]<-0.0 # upper limits
data_err<-melt(d2,id="filt",variable.name = "objs",value.name="err_flux")
综合数据:
finaldata<-cbind(data_flux,data_err)
绘图:
g<-ggplot(finaldata,aes(x=filt,y=log10(flux),color=objs))
gf1<-g+geom_point(size=2,alpha=0.8,pch=15)+theme_bw()
gf<-gf1+geom_errorbar(aes(ymax=log10(flux)+err_flux,ymin=log10(flux)-err_flux),size=0.5,color="darkgrey")
gff<-gf+xlab("wavelength")+ylim(0,5)+geom_smooth(method="loess",se=FALSE)
gff+scale_color_hue(l=10, c=75)
'geom_error' 函数绘制了上限和下限,我可以使用“if”条件过滤掉仅提供上限的数据,但问题再次是关于在 ggplot 内绘图。
任何帮助或建议将不胜感激。
示例数据:
index filt objs flux filt objs err_flux
1 4590 obj1 1005.448892 4590 errobj1 0.0401
2 6220 obj1 1420.626789 6220 errobj1 0.0392
3 7640 obj1 1855.5813550.04320 obj1350.04320
...................................................
17 8989 obj2 246.899380 8989 errobj2 0.0608
18 12561 obj2 381.311585 12561 errobj2 0.0866
19 16467 obj2 657.233966 16467 errobj2 0.0982
20 21512 obj2 949.642188 21512 errobj2 0.1516
21 2030 obj2 9.838299 2030 errobj2 0.0000
22 2253 obj2 17.097003 2253 errobj2 0.0000
23 2612 obj2 14.754347 2612 errobj2 0.0000
24 3470 obj2 14.890868 3470 错误obj2 0.0000
我想为“err_flux==0.0”的点绘制我的图(附加)的上限。即对于图中的“obj2”,我想绘制从最左边的 4 个点向下指向的箭头。