Question: Continuously add lines to ggplot with for loop
0
gravatar for camachofrancine
2.6 years ago by
United States
camachofrancine110 wrote:

Hi there,

I have an object called gPlot and I want to continuously add geom_lines to the gPlot object.

df is a dataframe 
sstart ssend
167    2637
552    8273

My following code is :

gPlot<-ggplot() + geom_line(aes(x=1:6549, y=1, colour="red")) + geom_line(aes(x=295:1218, y=.99, colour="blue")) + geom_line(aes(x=3084:4340, y=.99, colour="green"))+coord_cartesian(xlim = c(0, 6549), ylim = c(0,1)) +  xlab("coordinates") + ylab("regions")

geomLine <- NULL
for(i in 1:nrow(df)){
  rowDF<-df[i,]
  dfstart <-rowDF$sstart
  dfend<-rowDF$send
  geomLine<-gPlot+geom_line(aes(x=dfstart:dfend, y=.95, colour="black"))

}

However, when I plot the new ranges from the df, the plot does not add all the ranges but, just puts the last number range. Any help would be appreciated.

Thanks!

ggplot2 R • 4.4k views
ADD COMMENTlink modified 2.6 years ago • written 2.6 years ago by camachofrancine110

did you find the reason why this happen in the for loop?

ADD REPLYlink written 3 months ago by lffu_003240
2
gravatar for camachofrancine
2.6 years ago by
United States
camachofrancine110 wrote:

I finally solved the above question after staring at the computer. Using aes_string() made it work.

for(i in 1:nrow(stool_polyketide_analysis_df_vfam)){
  rowDF<-stool_polyketide_analysis_df_vfam[i,]
  dfstart <-rowDF$sstart
  dfend<-rowDF$send
  gPlot<-gPlot+geom_line(aes_string(x=dfstart:dfend, y=.95-.005*i))

}
ADD COMMENTlink modified 23 months ago • written 2.6 years ago by camachofrancine110

Believe it or not, this is the best answer to solving the looping problem with ggplot. Most of the answers have a lot of elaborate schemes that I was not able to get to work. This simple one works!! Thanks

ADD REPLYlink written 22 days ago by godcent700
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 944 users visited in the last hour