I want to write a function that will return lattice plots. This simple function output a list of two plots. These plots can be individually shown on the console. But I am unable to put them on two panels of a single plot. What changes do I need to make to this function? Thanks, Naresh library(lattice) getPlots <- function(){ x <- rnorm(1000) plt1 <- histogram(x) plt2 <- bwplot(x) list(plt1, plt2) } plot.list <- getPlots() plot.list[1] #Plots graph plot.list[2] #Plots graph plot(plot.list[1], position = c(0, 0, 1, 0.5), more = TRUE) #Error message plot(plot.list[2], position = c(0, 0.5, 1, 1), more = FALSE) #Error message ## Plotting outside function works x <- rnorm(1000) plt1 <- histogram(x) plt2 <- bwplot(x) plot(plt1, position = c(0, 0, 1, 0.5), more = TRUE) plot(plt2, position = c(0, 0.5, 1, 1), more = FALSE)
Hi Naresh, The somewhat obscure syntax of lattice. print(plot.list[[1]]) print(plot.list[[2]]) Jim On Fri, Jun 12, 2020 at 7:53 PM Naresh Gurbuxani <naresh_gurbuxani at hotmail.com> wrote:> > > I want to write a function that will return lattice plots. This simple > function output a list of two plots. These plots can be > individually shown on the console. But I am unable to put them on two > panels of a single plot. > > What changes do I need to make to this function? > > Thanks, > Naresh > > library(lattice) > > getPlots <- function(){ > x <- rnorm(1000) > plt1 <- histogram(x) > plt2 <- bwplot(x) > list(plt1, plt2) > } > > plot.list <- getPlots() > > plot.list[1] #Plots graph > plot.list[2] #Plots graph > > plot(plot.list[1], position = c(0, 0, 1, 0.5), more = TRUE) #Error message > plot(plot.list[2], position = c(0, 0.5, 1, 1), more = FALSE) #Error message > > ## Plotting outside function works > x <- rnorm(1000) > plt1 <- histogram(x) > plt2 <- bwplot(x) > plot(plt1, position = c(0, 0, 1, 0.5), more = TRUE) > plot(plt2, position = c(0, 0.5, 1, 1), more = FALSE) > > ______________________________________________ > 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.
Hello, plot.list is a list, try '[[' to access its members. ('[' returns sub-lists.) plot(plot.list[[1]], position = c(0, 0, 1, 0.5), more = TRUE) #Works plot(plot.list[[2]], position = c(0, 0.5, 1, 1), more = FALSE) #Works Hope this helps, Rui Barradas ?s 10:52 de 12/06/20, Naresh Gurbuxani escreveu:> > I want to write a function that will return lattice plots. This simple > function output a list of two plots. These plots can be > individually shown on the console. But I am unable to put them on two > panels of a single plot. > > What changes do I need to make to this function? > > Thanks, > Naresh > > library(lattice) > > getPlots <- function(){ > x <- rnorm(1000) > plt1 <- histogram(x) > plt2 <- bwplot(x) > list(plt1, plt2) > } > > plot.list <- getPlots() > > plot.list[1] #Plots graph > plot.list[2] #Plots graph > > plot(plot.list[1], position = c(0, 0, 1, 0.5), more = TRUE) #Error message > plot(plot.list[2], position = c(0, 0.5, 1, 1), more = FALSE) #Error message > > ## Plotting outside function works > x <- rnorm(1000) > plt1 <- histogram(x) > plt2 <- bwplot(x) > plot(plt1, position = c(0, 0, 1, 0.5), more = TRUE) > plot(plt2, position = c(0, 0.5, 1, 1), more = FALSE) > > ______________________________________________ > 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. >
Thanks for your quick response. ?It works as I wanted.? From: Rui Barradas <ruipbarradas at sapo.pt> Sent: Friday, June 12, 2020 7:08 AM To: Naresh Gurbuxani <naresh_gurbuxani at hotmail.com>; r-help at r-project.org <r-help at R-project.org> Subject: Re: [R] function to return plots ? Hello, plot.list is a list, try '[[' to access its members. ('[' returns sub-lists.) plot(plot.list[[1]], position = c(0, 0, 1, 0.5), more = TRUE) #Works plot(plot.list[[2]], position = c(0, 0.5, 1, 1), more = FALSE) #Works Hope this helps, Rui Barradas ?s 10:52 de 12/06/20, Naresh Gurbuxani escreveu:> > I want to write a function that will return lattice plots.? This simple > function output a list of two plots.? These plots can be > individually shown on the console.? But I am unable to put them on two > panels of a single plot. > > What changes do I need to make to this function? > > Thanks, > Naresh > > library(lattice) > > getPlots <- function(){ >????? x <- rnorm(1000) >????? plt1 <- histogram(x) >????? plt2 <- bwplot(x) >????? list(plt1, plt2) > } > > plot.list <- getPlots() > > plot.list[1] #Plots graph > plot.list[2] #Plots graph > > plot(plot.list[1], position = c(0, 0, 1, 0.5), more = TRUE) #Error message > plot(plot.list[2], position = c(0, 0.5, 1, 1), more = FALSE) #Error message > > ## Plotting outside function works > x <- rnorm(1000) > plt1 <- histogram(x) > plt2 <- bwplot(x) > plot(plt1, position = c(0, 0, 1, 0.5), more = TRUE) > plot(plt2, position = c(0, 0.5, 1, 1), more = FALSE) > > ______________________________________________ > 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. >