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