Question: Continuously add lines to ggplot with for loop
gravatar for frcamacho
4.1 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 • 8.8k views
ADD COMMENTlink modified 10 months ago by mmyousefies0 • written 4.1 years ago by frcamacho190

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

ADD REPLYlink written 21 months ago by lffu_003260
gravatar for frcamacho
4.1 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 3.4 years ago • written 4.1 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 18 months ago by godcent7020

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

ADD REPLYlink written 12 months ago by ATpoint46k
gravatar for mmyousefies
10 months ago by
mmyousefies0 wrote:

thank you, one-week struggle finally solved

ADD COMMENTlink written 10 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: 1627 users visited in the last hour