[R] R lattice : labeling of matrix groups of different size with strips

Duncan Mackay dulcalma at bigpond.com
Fri Jun 26 04:16:49 CEST 2015


I am not sure that changing the aspect ratio by using 
levelplot(plotMatrix[,,2],
                 aspect = 1/0.6,
                 ...)

will do the job as I seem to remember doing something like that when first looking at your problem. There were unwanted side effects

using grid.arrange is the quick way to fill the plot area, I rarely use it

You may be better off by using print - I have not got your original data so I can only guess
eg

print(plot2, position = c(0.2,0,0.8,0.5), more = TRUE)
print(plot1 position = c(0,0.5,1.1), more = FALSE)

You may have to fiddle with the position values for plot2 to get it right.

If the text of plot2 is too small then you could put a line in to get plot2
par.settings = list(fontsize = list(text = 12.5, points = 8)),  
this is device dependent and you may need to change it

 Regards

Duncan


-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of R codeplayer
Sent: Thursday, 25 June 2015 21:01
To: r-help at r-project.org
Subject: Re: [R] R lattice : labeling of matrix groups of different size with strips

Hi Duncan,


thank you very much for your help.


Originally, I thought that it is possible to use a different data
representation and then to automatically create the plots and strips
in lattice.

Based on your suggestion, I could write the code for an annotated
levelplot of the two groups (code is shown below).

An open question is how to display the two groups with the same aspect
ratio for the rows.


> plotMatrix
> , , group1
>
>   a b c d
> 1 1 0 0 0
> 2 1 0 0 0
> 3 1 1 0 0
> 4 0 1 0 0
> 5 0 1 1 0
>
> , , group2
>
>    a  b  c  d
> 1  0  0  1  0
> 2  0  0  1  1
> 3  0  0  0  1
> 4 NA NA NA NA
> 5 NA NA NA NA

library(gridExtra)

trellis.device(device = "pdf",file
="lattice_annotated_groups.pdf",width=8,height=5)

#The aspect="fill" option was added to coerce the same height of the 2 plots
#panel.text was used instead of grid.text to avoid using the
latticeExtra package

plot1 <- levelplot(plotMatrix[,,1],
             page = function(n)
             panel.text("group 1",
                 x = 0.5,
                 y = 0.96),
             colorkey = F,
             xlab = "",
             ylab="",
             aspect="fill")

pm <- plotMatrix[1:3,,2]
colnames(pm) <- rep("",ncol(pm))

plot2 <-levelplot(pm,
            page = function(n)
            panel.text(
                "group 2",
                 x = 0.5,
                 y = 0.96),
            colorkey = F,
            xlab = "",
            ylab="",
            aspect="fill")


grid.arrange(plot1,plot2,ncol=2)
dev.off()



More information about the R-help mailing list