Question: Continuously add lines to ggplot with for loop
1
gravatar for frcamacho
3.6 years ago by
frcamacho190
United States
frcamacho190 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 • 7.5k views
ADD COMMENTlink modified 5 months ago by mmyousefies0 • written 3.6 years ago by frcamacho190

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

ADD REPLYlink written 16 months ago by lffu_003250
5
gravatar for frcamacho
3.6 years ago by
frcamacho190
United States
frcamacho190 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 2.9 years ago • written 3.6 years ago by frcamacho190
2

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 13 months ago by godcent7020

Cool, aes_string is exactly what I was looking for :)

ADD REPLYlink written 6 months ago by ATpoint38k
0
gravatar for mmyousefies
5 months ago by
mmyousefies0 wrote:

thank you, one-week struggle finally solved

ADD COMMENTlink written 5 months ago by mmyousefies0
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: 1269 users visited in the last hour