Quantcast

Several lattice plots on one page

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Several lattice plots on one page

Marcus Drescher
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Several lattice plots on one page

djmuseR
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Several lattice plots on one page

Abhijit Dasgupta, PhD-2
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.
Loading...