为R中的ggplot绘制上限(对于错误)

时间:2015-10-12 18:19:42

标签: r ggplot2 limits errorbar

我正在使用ggplot来绘制一些数据(x ='filt'和y ='flux'(如下面的代码所示)以及下部和上部对称误差条,它们在不同的文件中提供。 /> 问题是某些错误值对应于“-1”,实际上是上限。我完全不知道使用ggplot绘制上限。

所以,我刚刚将-1替换为0.0,这让我可以绘制其他错误条,这是我的程序:

 skipped few lines
带有filter-flux数据的

数据文件:

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 ob​​j1 1420.626789 6220 errobj1 0.0392
3 7640 obj1 1855.581355 7640 errobj1 0.0432

............................................... 。

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 errobj2 0.0000

我想在我的情节(附加)中绘制上限,其中“err_flux == 0.0”。即对于图中的“obj2”,我想绘制从最左边的4个点向下的箭头。

enter image description here

1 个答案:

答案 0 :(得分:0)

您是否尝试设置y轴的轴限制?

尝试expand_limits()

它可以作为一种改变x轴和y轴的方法,而不会过多地扰乱ylimits。

expand_limits(y=-1)