Question: Continuously add lines to ggplot with for loop
gravatar for frcamacho
3.6 years ago by
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)){
  dfstart <-rowDF$sstart
  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.


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
gravatar for frcamacho
3.6 years ago by
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)){
  dfstart <-rowDF$sstart
  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

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
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.


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