Hi Luigi

Michael answered your question about printing 

lattice and ggplot require their graphics to be in print()

If you have problems in printing you may have to use 

trellis.device(device = pdf,  # or what ever the actual device is
                        file = ####,
                        <remainder of script>)
? trellis.device for info
I occasionally have to use it sometimes instead of pdf etc

Duncan

-----Original Message-----
From: Luigi Marongiu [mailto:marongiu.lu...@gmail.com] 
Sent: Thursday, 23 April 2015 22:56
To: Duncan Mackay
Subject: Re: [R] high density plots using lattice dotplot()

Dear Duncan,
many thanks for the precious help! I have rearranged what you sent me
with a bit of stuff I wrote already for another project and the
results seems to work fine.
Best regards,
Luigi

>>> example
DF <-
  data.frame(Y = rnorm(17280),
             X = rnorm(1:45),
             Y2 = rnorm(17280)+2,
             Z  = 1:384)
head(df,10)
xyplot(Y ~ X | Z,
       data = DF,
       groups = Z,
       allow.multiple = TRUE,
       ylab= "Y VALUES",
       xlab="X VALUES",
       main="TITLE",
       scales = list(
         x = list(draw = FALSE),
         y = list(draw = FALSE),
         relation="same",
         alternating=TRUE),
       as.table = TRUE,
       layout = c(24,16),
       par.settings = list(
         strip.background=list(col="white"),
         axis.text = list(cex = 0.6),
         par.xlab.text = list(cex = 0.75),
         par.ylab.text = list(cex = 0.75),
         par.main.text = list(cex = 0.8),
         superpose.symbol = list(type = "l", cex = 1)
       ),
       strip    = FALSE,
       type = "l",
       col = 3,
       panel = panel.superpose
)

On Thu, Apr 23, 2015 at 3:08 AM, Duncan Mackay <dulca...@bigpond.com> wrote:
> Hi Luigi
>
> Try
>
> set.seed(1)
>
> PLATE <-
> data.frame(Delta.Rn = rnorm(500),
>            Cycle = rnorm(500),
>            Delta2 = rnorm(500)+1,
>            Well  = rep(1:50, each = 10))
> head(PLATE,10)
>
> xyplot(Delta.Rn+Delta2 ~ Cycle | Well,
>          data = subset(PLATE, Well %in% 1:49),
>          allow.multiple = TRUE,
>          ylab="Fluorescence (Delta Rn)",
>          xlab="Cycles",
>          main="TITLE",
>          scales = list(
>            x = list(draw = FALSE),
>            y = list(draw = FALSE),
>            relation="same",
>            alternating=TRUE),
>          as.table = TRUE,
>          layout = c(10,5),
>          par.settings = list(
>            strip.background=list(col="white"),
>            # layout.heights = list(strip = 0.8),
>            axis.text = list(cex = 0.6),
>            par.xlab.text = list(cex = 0.75),
>            par.ylab.text = list(cex = 0.75),
>            par.main.text = list(cex = 0.8),
>            superpose.symbol = list(pch = ".", cex = 2,
>                                    col = c(2,4) )
>          ),
>          strip    = FALSE,
>          type = "p",
>          key = list(text = list(label = c("Delta.Rn","Delta2")),
>                     points = list(cex = 0.6, pch = 16, col = c(2,4)),
>                     cex = 0.6,
>                     x = 0.9,
>                     y = 0.1),
>          panel = panel.superpose,
>          panel.groups = function(x,y,...){
>
>                    panel.xyplot(x,y,... )
>
>                    # text argument can be a vector of values not
>                    # necessarily the group name
>                    pnl = panel.number()  # needed as group.number if added is 
> now either 1 or 2
>
>                    grid.text(c(LETTERS,letters)[pnl],
>                              y = 0.93, x = 0.5,
>                              default.units = "npc",
>                              just = c("left", "bottom"),
>                              gp = gpar(fontsize = 7) )
>
>          }
>   )
>
> Remember to delete the group argument (I forgot to at first as the groups are 
> now Delta.Rn Delta2)
> You may have 1+ empty panels so put the legend there where ever it is just 
> amend the x and y or fine tune them
> you can have the pch = "." and increase cex but  it will become as square 
> with large cex
> Duncan
>
>
> -----Original Message-----
> From: Luigi Marongiu [mailto:marongiu.lu...@gmail.com]
> Sent: Thursday, 23 April 2015 10:05
> To: Duncan Mackay
> Subject: Re: [R] high density plots using lattice dotplot()
>
> Dear Duncan,
> sorry to come back so soon, but i wanted to ask you whether it would
> be  possible to plot two sets of lines within each box, let's say a
> main value A and a secondary value B. In normal plots I could use a
> plot() followed by points(); what would be the strategy here?
> Thank you again,
> best regards,
> Luigi
>
>
> On Wed, Apr 22, 2015 at 6:46 AM, Duncan Mackay <dulca...@bigpond.com> wrote:
>>
>> Hi Luigi
>>
>> I should have made up an example to make things easier when I replied today
>>
>> This should get you going
>>
>> set.seed(1)
>>
>> PLATE <-
>> data.frame(Delta.Rn = rnorm(500),
>>            Cycle = rnorm(500),
>>            Well  = rep(1:50, each = 10))
>> head(PLATE)
>>
>> xyplot(Delta.Rn ~ Cycle | Well,
>>          data = PLATE,
>>          groups = Well,
>>          ylab="Fluorescence (Delta Rn)",
>>          xlab="Cycles",
>>          main="TITLE",
>>          scales = list(
>>            x = list(draw = FALSE),
>>            y = list(draw = FALSE),
>>            relation="same",
>>            alternating=TRUE),
>>          as.table = TRUE,
>>          layout = c(10,5),
>>          par.settings = list(
>>            strip.background=list(col="white"),
>>            # layout.heights = list(strip = 0.8),
>>            axis.text = list(cex = 0.6),
>>            par.xlab.text = list(cex = 0.75),
>>            par.ylab.text = list(cex = 0.75),
>>           par.main.text = list(cex = 0.8)
>>            superpose.symbol = list(pch = ".", cex = 2)
>>          ),
>>          strip    = FALSE,
>>          type = "p",
>>          col = 1,
>>          panel = panel.superpose,
>>          panel.groups = function(x,y,...,group.number){
>>
>>                    panel.xyplot(x,y,... )
>>
>>                    # text argument can be a vector of values not
>>                    # necessarily the group name
>>                    grid.text(c(LETTERS,letters)[group.number],
>>                              y = 0.93, x = 0.5,
>>                              default.units = "npc",
>>                              just = c("left", "bottom"),
>>                              gp = gpar(fontsize = 7) )
>>
>>          }
>>   )
>>
>> You could use panel.text instead of grid.text
>> Duncan
>>
>> -----Original Message-----
>> From: Luigi Marongiu [mailto:marongiu.lu...@gmail.com]
>> Sent: Wednesday, 22 April 2015 08:24
>> To: Duncan Mackay
>> Subject: Re: [R] high density plots using lattice dotplot()
>>
>> Dear Duncan,
>> thank you for your reply. I tried to implement your suggestions but as
>> is on your reply did not work (actually R crashed) and a slight
>> elaboration returned the figure attached, which is essentially still
>> displaying text and not drawing the data. Here is what I wrote:
>>
>> xyplot(Delta.Rn ~ Cycle | Well,
>>          data = PLATE,
>>          ylab="Fluorescence (Delta Rn)",
>>          xlab="Cycles",
>>          main=TITLE,
>>          scales = list(
>>            x = list(draw = FALSE),
>>            y = list(draw = FALSE),
>>            relation="same",
>>            alternating=TRUE),
>>          as.table = TRUE,
>>          layout = c(24,16),
>>          par.settings = list(
>>            strip.background=list(col="white"),
>>            axis.text = list(cex = 0.6),
>>            par.xlab.text = list(cex = 0.75),
>>            par.ylab.text = list(cex = 0.75),
>>            superpose.symbol = list(pch = ".", cex = 2)
>>          ),
>>          strip    = FALSE,
>>          type = "p",
>>          layout.heights = list(strip = 0.8),
>>          panel = function(x,y, subscripts, groups,...){
>>            panel.superpose(x,y,subscripts,groups,...,
>>                            col = ...)
>>            panel.text(x,y,...,cex = 0.6)
>>          }
>>   )
>>
>>
>> How can I improve the script?
>> Many thanks
>> Luigi
>>
>> On Tue, Apr 21, 2015 at 12:35 AM, Duncan Mackay <dulca...@bigpond.com> wrote:
>>> Hi Luigi
>>>
>>> Strips take up space so if you are willing to not have strip and put the
>>> strip values within the plot area then
>>>
>>>       xyplot(y ~ x|cond.factor, data = ...,
>>>              as.table = T,
>>>              groups   = ...,
>>>              layout   = ...,
>>>              drop.unused = T,
>>>              par.settings = list(axis.text = list(cex = 0.6),
>>>                                  par.xlab.text = list(cex = 0.75),
>>>                                  par.ylab.text = list(cex = 0.75)
>>>                                  superpose.symbol = list(pch = ".", cex = 2)
>>>                             ),
>>>              strip    = FALSE,
>>>              scales   = list(x = list(alternating = 2),
>>>                              y = list(alternating = FALSE)
>>>                              ),
>>>              type = "p",
>>>              panel = function(x,y, subscripts, groups,...){
>>>                                 panel.superpose(x,y,subscripts,groups,...,
>>> col = ...)
>>>                                 panel.text(x,y,...,cex = 0.6)
>>>                             }
>>>       )
>>>
>>> if the text values are a vector
>>>       stext = ...
>>>       xyplot(y ~ x|cond.factor, data = ...,
>>>              as.table = T,
>>>              groups   = ...,
>>>              layout   = ...,
>>>              drop.unused = T,
>>>              par.settings = list(axis.text = list(cex = 0.6),
>>>                                  par.xlab.text = list(cex = 0.75),
>>>                                  par.ylab.text = list(cex = 0.75)
>>>                                  superpose.symbol = list(pch = ".", cex = 2)
>>>                             ),
>>>              strip    = FALSE,
>>>              scales   = list(x = list(alternating = 2),
>>>                              y = list(alternating = FALSE)
>>>                              ),
>>>              type = "p",
>>>              panel = function(x,y, subscripts, groups,...){
>>>                                pnl = panel.number()
>>>                                 panel.superpose(x,y,subscripts,groups,...,
>>> col = ...)
>>>                                 panel.text(x,y,stext[pnl],cex = 0.6)
>>>                             }
>>>       )
>>>
>>> you could also you group.number instead of pnl if it is needed elsewhere.
>>> text position could be done in a similar fashion if needed to be in
>>> different places for some panels.
>>>
>>> If you require the strip then an additional par.settings is
>>> layout.heights = list(strip = 0.8)
>>> or even untested in this situation
>>> strip = FALSE
>>> strip.left  = TRUE
>>>
>>> Regards
>>>
>>> Duncan
>>>
>>> Duncan Mackay
>>> Department of Agronomy and Soil Science
>>> University of New England
>>> Armidale NSW 2351
>>> Email: home: mac...@northnet.com.au
>>>
>>> -----Original Message-----
>>> From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Luigi
>>> Marongiu
>>> Sent: Sunday, 19 April 2015 19:28
>>> To: r-help
>>> Subject: [R] high density plots using lattice dotplot()
>>>
>>> Dear all,
>>> I am trying to plot the results of a PCR experiments that involves 384
>>> individual plots. Admittedly the space for the plots will be tiny, but
>>> I just nedd some icon to have a feeling of the layout of the
>>> experiment and a quick comparison of the plots.
>>> I believe that lattice would be the right tool, but when I tried to
>>> implement i got an error. Specifically the output would be a A4 pdf,
>>> so with about 600 cm2 of drawing space, which gives about 1.5 cm2 for
>>> each plot; removing the labels that might just work.
>>> So I have the y values = 'fluorescence', x 'values' = cycles and 384
>>> 'well' data. I implemented to begin with:
>>>
>>> xyplot(fluorescence ~ cycles | well,
>>>          ylab="Fluorescence",
>>>          xlab="Cycles",
>>>          main=list(draw = FALSE),
>>>          scales = list(
>>>            x = list(draw = FALSE),
>>>            y = list(draw = FALSE),
>>>            relation="same",
>>>            alternating=TRUE),
>>>          layout = c(24,16),
>>>          par.settings = list(strip.background=list(col="white")),
>>>          pch = "."
>>>   )
>>>
>>> but the  the individual graphs show only the writing "data" instead of
>>> the actual plots.
>>> How can I overcome this error?
>>> Thank you
>>> Best regards
>>> Luigi
>>>
>>> ______________________________________________
>>> R-help@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.
>>>
>>
>

______________________________________________
R-help@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.

Reply via email to