Я создал график, используя пакет ggplot2 в R, используя следующие данные:
# 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**
Я строю график flux и filt с помощью ggplot, а затем добавляю столбцы y-ошибок, как указано в столбце err_flux. Я хотел бы нарисовать стрелки из точек данных, для которых err_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)
Результирующий график показан ниже:
Вот что я пытался добавить стрелками (например, 4 крайние левые точки для «obj2» на графике, показанном выше, но это не работает:
for (i in 1:nrow(finaldata)) {
if (finaldata$err_flux==0.){
gfinal<-gfinal + geom_segment(x=finaldata$filt[i], y=finaldata$flux[i], xend=finaldata$filt[i], yend=finaldata$flux[i]-0.5,arrow=arrow(length=unit(0.25,"cm")))
}
}
Более того, если я применю 'geom_segment' к подмножеству моих фактических данных, он не будет добавлен к моему существующему графику (gfinal) из-за разных размеров.
Любые предложения/помощь будут оценены.
annotate
и не используйте циклfor
. Подставьте данные к тому, что вы хотите аннотировать, и используйте аргументdata
. - person Gregor Thomas   schedule 13.10.2015sub<-subset(finaldata[1:26,],finaldata$err_flux==0.) gfinal+annotate(sub,x=sub$filt,xend=sub$filt,y=sub$flux,yend=sub$flux-0.5,color="red")
- person Phyast10   schedule 13.10.2015annotate("segment",x=sub$filt,xend=sub$filt,y=log10(sub$flux),yend=log10(sub$flux)-0.5,color="red")
- person Phyast10   schedule 13.10.2015