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.