Martin Møller Skarbiniks Pedersen
2021-Apr-23 18:11 UTC
[R] ggplot2::geom_path() in a loop problems.
Hi, I have some problems understanding how to use geom_path() inside a loop. I know the code below is a bit silly but it is just a MRE ( https://stackoverflow.com/help/minimal-reproducible-example ) p1 looks like I expect however p2 only contains the last square. I expected p2 to be the same as p1. Any hints what is going on? Regards Martin library(ggplot2) df <- data.frame(x = c(0,25,0,-25,0), y = c(25,0,-25,0,25)) p1 <- ggplot() p1 <- p1 + geom_path(data = df,aes(x = x/1, y = y/1)) p1 <- p1 + geom_path(data = df,aes(x = x/2, y = y/2)) p1 <- p1 + xlim(-30,30) p1 <- p1 + ylim(-30,30) p1 p2 <- ggplot() for (idx in 1:2) { p2 <- p2 + geom_path(data = df,aes(x = x/idx, y = y/idx)) } p2 <- p2 + xlim(-30,30) p2 <- p2 + ylim(-30,30) p2 [[alternative HTML version deleted]]
Martin Møller Skarbiniks Pedersen
2021-Apr-23 21:20 UTC
[R] ggplot2::geom_path() in a loop problems.
On Fri, 23 Apr 2021 at 20:11, Martin M?ller Skarbiniks Pedersen < traxplayer at gmail.com> wrote:> > Hi, > > I have some problems understanding how to use geom_path() inside a loop. > I know the code below is a bit silly but it is just a MRE > ( https://stackoverflow.com/help/minimal-reproducible-example ) > > p1 looks like I expect however p2 only contains the last square. I > expected p2 to be the same as p1. > > Any hints what is going on? > Regards > Martin > > library(ggplot2) > > df <- data.frame(x = c(0,25,0,-25,0), y = c(25,0,-25,0,25)) > > p1 <- ggplot() > p1 <- p1 + geom_path(data = df,aes(x = x/1, y = y/1)) > p1 <- p1 + geom_path(data = df,aes(x = x/2, y = y/2)) > p1 <- p1 + xlim(-30,30) > p1 <- p1 + ylim(-30,30) > p1 > > > p2 <- ggplot() > for (idx in 1:2) { > p2 <- p2 + geom_path(data = df,aes(x = x/idx, y = y/idx)) > } > p2 <- p2 + xlim(-30,30) > p2 <- p2 + ylim(-30,30) > p2And the same strange effect if I write it like this: p3 <- ggplot() idx <- 1 p3 <- p3 + geom_path(data = df,aes(x = x/idx, y = y/idx)) idx <- 2 p3 <- p3 + geom_path(data = df,aes(x = x/idx, y = y/idx)) p3 <- p3 + xlim(-30,30) p3 <- p3 + ylim(-30,30) p3 [[alternative HTML version deleted]]