R 使用geom_段在现有绘图上绘制选定数据点的箭头
我已使用R中的ggplot2软件包,使用以下数据创建了一个绘图:R 使用geom_段在现有绘图上绘制选定数据点的箭头,r,plot,ggplot2,upperbound,R,Plot,Ggplot2,Upperbound,我已使用R中的ggplot2软件包,使用以下数据创建了一个绘图: # Ind filt objs flux filt objs err_flux# 01 4590 obj1 1005.448892 4590 errobj1 0.0401 02 6220 obj1 1420.626789 6220 errobj1 0.0392 03 7640 obj1 1855.581355 7640 errobj1 0.0432 *......
# Ind filt objs flux filt objs err_flux#
01 4590 obj1 1005.448892 4590 errobj1 0.0401
02 6220 obj1 1420.626789 6220 errobj1 0.0392
03 7640 obj1 1855.581355 7640 errobj1 0.0432
*.......skipped lines...*
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**
我正在用ggplot绘制通量vsfilt,然后添加通量列中定义的y误差条。
我想从数据点绘制箭头,其err\u flux==0。
以下是我目前的计划:
g <- ggplot(finaldata[1:26, ], 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.3,4.5) +
geom_smooth(method = "loess", se = FALSE)
gfinal <- gff + scale_color_hue(l = 10, c = 75)
gAnnotate
函数帮助我从选定的数据点绘制向下的箭头(上界)
我用geom_段
替换程序的最后一部分,该部分使用for和if循环
注释,如下所示:
sub<-subset(finaldata[1:26,],finaldata[1:26,]$err_flux==0.)
gfinal+annotate("segment",x=sub$filt,xend=sub$filt,y=log10(sub$flux),yend=log10(sub$flux)-0.25,color="red",arrow = arrow(length = unit(0.2, "cm")))
使用注释
,不要对
循环使用。将数据细分为您想要注释的部分,并使用数据参数。@Gregor:这是我第一次尝试使用R进行绘图,所以我就是这么做的:SubnerMind!我需要这样定义:annotate(“segment”,x=sub$filt,xend=sub$filt,y=log10(sub$flux),yend=log10(sub$flux)-0.5,color=“red”)
如果您愿意,在自己制定解决方案时鼓励您回答自己的问题。
sub<-subset(finaldata[1:26,],finaldata[1:26,]$err_flux==0.)
gfinal+annotate("segment",x=sub$filt,xend=sub$filt,y=log10(sub$flux),yend=log10(sub$flux)-0.25,color="red",arrow = arrow(length = unit(0.2, "cm")))