Martin Møller Skarbiniks Pedersen
2021-Apr-24 21:21 UTC
[R] ggplot2::geom_path() in a loop problems.
On Fri, 23 Apr 2021 at 20:51, Chris Evans <chrishold at psyctc.org> wrote:> > I may be quite wrong but isn't the for loop in the second example simplyoverwriting/replacing the first p2 with the second whereas the p1 version is adding the paths to p1.> > (If you see what I mean, I don't think I have expressed that very well.) > > Very best (all), > > ChrisHi Chris, Thanks for your email. However I don't think that is the problem. Same problem here: 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 df <- data.frame(x = c(0,25,0,-25,0), y = c(25,0,-25,0,25)) 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]]
Sigh. Don't do this. Setup your data frame with all the data you want to plot and give it to one geom. Use group columns such as factors (e.g. color, size, linetype, etc) to distinguish them. Using multiple geoms with different mappings is usually a recipe for disappointment. It also fails to create legible legends. On April 24, 2021 2:21:01 PM PDT, "Martin M?ller Skarbiniks Pedersen" <traxplayer at gmail.com> wrote:>On Fri, 23 Apr 2021 at 20:51, Chris Evans <chrishold at psyctc.org> wrote: >> >> I may be quite wrong but isn't the for loop in the second example >simply >overwriting/replacing the first p2 with the second whereas the p1 >version >is adding the paths to p1. >> >> (If you see what I mean, I don't think I have expressed that very >well.) >> >> Very best (all), >> >> Chris > > >Hi Chris, > Thanks for your email. However I don't think that is the problem. > Same problem here: > >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 > >df <- data.frame(x = c(0,25,0,-25,0), y = c(25,0,-25,0,25)) >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]] > >______________________________________________ >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code.-- Sent from my phone. Please excuse my brevity.