|
Dear all,
I am trying (!!!) to generate pdfs that have 8 plots on one page: df = data.frame( day = c(1,2,3,4), var1 = c(1,2,3,4), var2 = c(100,200,300,4000), var3 = c(10,20,300,40000), var4 = c(100000,20000,30000,4000), var5 = c(10,20,30,40), var6 = c(0.001,0.002,0.003,0.004), var7 = c(123,223,123,412), var8 = c(213,123,234,435), all = as.factor(c(1,1,1,1))) pdf("test1.pdf", width=20, heigh=27, paper="a4") print(plot(groupedData(var1 ~ day | all, data = df), main = "var1", xlab="", ylab=""), split=c(1,1,2,4), more=TRUE) print(plot(groupedData(var2 ~ day | all, data = df), main = "var2", xlab="", ylab=""), split=c(1,2,2,4), more=TRUE) print(plot(groupedData(var3 ~ day | all, data = df), main = "var3", xlab="", ylab=""), split=c(1,3,2,4), more=TRUE) print(plot(groupedData(var4 ~ day | all, data = df), main = "var4", xlab="", ylab=""), split=c(1,4,2,4), more=TRUE) print(plot(groupedData(var5 ~ day | all, data = df), main = "var5", xlab="", ylab=""), split=c(2,1,2,4), more=TRUE) print(plot(groupedData(var6 ~ day | all, data = df), main = "var6", xlab="", ylab=""), split=c(2,2,2,4), more=TRUE) print(plot(groupedData(var7 ~ day | all, data = df), main = "var7", xlab="", ylab=""), split=c(2,3,2,4), more=TRUE) print(plot(groupedData(var8 ~ day | all, data = df), main = "var8", xlab="", ylab=""), split=c(2,4,2,4)) dev.off() My problem is that the separate plots all have different sizes. (Some are tall, but very small, or the other way around. The target is to have equally tall and wide graphs. (The variables have different scales. Grouping does not work.) Optimally, the plots would use the complete pdf page. Any ideas how to adjust height and width? Best Marcus ______________________________________________ [hidden email] mailing list 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. |
|
Hi:
Is this what you had in mind? library(reshape2) df <- df[, -10] # last variable is superfluous dm <- melt(df, id = 'day') head(dm) day variable value 1 1 var1 1 2 2 var1 2 3 3 var1 3 4 4 var1 4 5 1 var2 100 6 2 var2 200 xyplot(value ~ day | variable, data = dm, scales = list(y = list(relation = 'free'))) melt() is useful in this problem because it stacks the data in 'long' form and creates a factor 'variable' whose levels are the variable names. The variable 'value' contains the responses. Conditioning on 'variable' in dm then gets you individual plots of value ~ day by variable. You can use layout = to specify the arrangement of plots per page, and perhaps as.table = TRUE if you want the plots rendered from top left rather than bottom left. HTH, Dennis On Mon, Nov 8, 2010 at 10:19 AM, Marcus Drescher <[hidden email]> wrote: > Dear all, > > I am trying (!!!) to generate pdfs that have 8 plots on one page: > > > df = data.frame( > day = c(1,2,3,4), > var1 = c(1,2,3,4), > var2 = c(100,200,300,4000), > var3 = c(10,20,300,40000), > var4 = c(100000,20000,30000,4000), > var5 = c(10,20,30,40), > var6 = c(0.001,0.002,0.003,0.004), > var7 = c(123,223,123,412), > var8 = c(213,123,234,435), > all = as.factor(c(1,1,1,1))) > > pdf("test1.pdf", width=20, heigh=27, paper="a4") > print(plot(groupedData(var1 ~ day | all, data = df), main = "var1", > xlab="", ylab=""), split=c(1,1,2,4), more=TRUE) > print(plot(groupedData(var2 ~ day | all, data = df), main = "var2", > xlab="", ylab=""), split=c(1,2,2,4), more=TRUE) > print(plot(groupedData(var3 ~ day | all, data = df), main = "var3", > xlab="", ylab=""), split=c(1,3,2,4), more=TRUE) > print(plot(groupedData(var4 ~ day | all, data = df), main = "var4", > xlab="", ylab=""), split=c(1,4,2,4), more=TRUE) > print(plot(groupedData(var5 ~ day | all, data = df), main = "var5", > xlab="", ylab=""), split=c(2,1,2,4), more=TRUE) > print(plot(groupedData(var6 ~ day | all, data = df), main = "var6", > xlab="", ylab=""), split=c(2,2,2,4), more=TRUE) > print(plot(groupedData(var7 ~ day | all, data = df), main = "var7", > xlab="", ylab=""), split=c(2,3,2,4), more=TRUE) > print(plot(groupedData(var8 ~ day | all, data = df), main = "var8", > xlab="", ylab=""), split=c(2,4,2,4)) > dev.off() > > > My problem is that the separate plots all have different sizes. (Some are > tall, but very small, or the other way around. The target is to have equally > tall and wide graphs. (The variables have different scales. Grouping does > not work.) > > Optimally, the plots would use the complete pdf page. > > Any ideas how to adjust height and width? > > Best > Marcus > > ______________________________________________ > [hidden email] mailing list > 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. > [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list 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. |
|
In reply to this post by Marcus Drescher
Another solution is using grid.arrange in the gridExtra package. This works like the par(mfrow=...) command, but for grid-based graphics like lattice and ggplot2
On Nov 8, 2010, at 1:19 PM, Marcus Drescher wrote: > Dear all, > > I am trying (!!!) to generate pdfs that have 8 plots on one page: > > > df = data.frame( > day = c(1,2,3,4), > var1 = c(1,2,3,4), > var2 = c(100,200,300,4000), > var3 = c(10,20,300,40000), > var4 = c(100000,20000,30000,4000), > var5 = c(10,20,30,40), > var6 = c(0.001,0.002,0.003,0.004), > var7 = c(123,223,123,412), > var8 = c(213,123,234,435), > all = as.factor(c(1,1,1,1))) > > pdf("test1.pdf", width=20, heigh=27, paper="a4") > print(plot(groupedData(var1 ~ day | all, data = df), main = "var1", xlab="", ylab=""), split=c(1,1,2,4), more=TRUE) > print(plot(groupedData(var2 ~ day | all, data = df), main = "var2", xlab="", ylab=""), split=c(1,2,2,4), more=TRUE) > print(plot(groupedData(var3 ~ day | all, data = df), main = "var3", xlab="", ylab=""), split=c(1,3,2,4), more=TRUE) > print(plot(groupedData(var4 ~ day | all, data = df), main = "var4", xlab="", ylab=""), split=c(1,4,2,4), more=TRUE) > print(plot(groupedData(var5 ~ day | all, data = df), main = "var5", xlab="", ylab=""), split=c(2,1,2,4), more=TRUE) > print(plot(groupedData(var6 ~ day | all, data = df), main = "var6", xlab="", ylab=""), split=c(2,2,2,4), more=TRUE) > print(plot(groupedData(var7 ~ day | all, data = df), main = "var7", xlab="", ylab=""), split=c(2,3,2,4), more=TRUE) > print(plot(groupedData(var8 ~ day | all, data = df), main = "var8", xlab="", ylab=""), split=c(2,4,2,4)) > dev.off() > > > My problem is that the separate plots all have different sizes. (Some are tall, but very small, or the other way around. The target is to have equally tall and wide graphs. (The variables have different scales. Grouping does not work.) > > Optimally, the plots would use the complete pdf page. > > Any ideas how to adjust height and width? > > Best > Marcus > > ______________________________________________ > [hidden email] mailing list > 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. ______________________________________________ [hidden email] mailing list 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. |
| Powered by Nabble | Edit this page |
