Hi Luigi

This produces plenty of white space for the y axes

Y<-max(my.data$copy)

stripplot(
  copy ~ factor(positivity)|factor(stimulation, levels = c("Unst.",
"ESAT6","CFP10","Rv3615c", "Rv2654","Rv3879", "Rv3873","PHA")),
       my.data,
       group = positivity,
       hor=F,
       layout = c(8,1),
       scales = list(x = list(at = c(1,2), labels = c("N","P")),
                     y= list(relation = "free")),
       jitter.data=TRUE, pch=c(16,1), col="black",
       ylab=expression(bold("Copy")),
       xlab=expression(bold("Stimulation")),
       main="Plot",
       par.settings = list(strip.background=list(col="white")),
       par.strip.text=list(font=2),
       key = key.plot,
       panel = function(x, y, ...)
  {
            pnl = panel.number()
  k<-0
  for (i in 1:2){
   datme<-subset(datmeA, positivity==i-1)
             w<-i+k
                   panel.segments(x0 = X[w], y0 =  datme[datme[,2]==
levels(datme[,2])[pnl],"copy"],
                                  x1 = X[w+1],  y1 = datme[datme[,2]==
levels(datme[,2])[pnl],"copy"],lwd = 2, col = "black")
                  k=k+1

      panel.stripplot(x,y, ...)
   }
             }
       )
You could limit the y-axis to your levels       
stripplot(
  copy ~ factor(positivity)|factor(stimulation, levels = c("Unst.",
"ESAT6","CFP10","Rv3615c", "Rv2654","Rv3879", "Rv3873","PHA")),
       my.data,
       group = positivity,
       hor=F,
       layout = c(8,1),
       scales = list(x = list(at = c(1,2), labels = c("N","P")),
                     y= list(relation = "free",
                                 limits = list(c(0, max panel 1),
                                                     c(0, max panel 2),
                                                    ...
                                                   c(0, max panel 8)),
      )),
       jitter.data=TRUE, pch=c(16,1), col="black",
       ylab=expression(bold("Copy")),
       xlab=expression(bold("Stimulation")),
       main="Plot",
       par.settings = list(strip.background=list(col="white")),
       par.strip.text=list(font=2),
       key = key.plot,
       panel = function(x, y, ...)
  {
            pnl = panel.number()
  k<-0
  for (i in 1:2){
   datme<-subset(datmeA, positivity==i-1)
             w<-i+k
                   panel.segments(x0 = X[w], y0 =  datme[datme[,2]==
levels(datme[,2])[pnl],"copy"],
                                  x1 = X[w+1],  y1 = datme[datme[,2]==
levels(datme[,2])[pnl],"copy"],lwd = 2, col = "black")
                  k=k+1

      panel.stripplot(x,y, ...)
   }
             }
       )

Sorting the stimulation groups shows that some of them can be loosely grouped 
so reordering the factors

stripplot(copy ~ factor(positivity)|factor(stimulation, levels = 
c("PHA","Rv2654","CFP10","Unst.","Rv3615c", "Rv3873","ESAT6", "Rv3879")),
       my.data,
       group = positivity,
       hor=F,
       layout = c(2,4),
       scales = list(x = list(at = c(1,2), labels = c("N","P")),
                     y= list(relation = "free")),
       jitter.data=TRUE, pch=c(16,1), col="black",
       ylab=expression(bold("Copy")),
       xlab=expression(bold("Stimulation")),
       main="Plot",
       par.settings = list(strip.background=list(col="white")),
       par.strip.text=list(font=2),
       key = key.plot,
       panel = function(x, y, ...)
  {
            pnl = panel.number()
  k<-0
  for (i in 1:2){
   datme<-subset(datmeA, positivity==i-1)
             w<-i+k
                   panel.segments(x0 = X[w], y0 =  datme[datme[,2]==
levels(datme[,2])[pnl],"copy"],
                                  x1 = X[w+1],  y1 = datme[datme[,2]==
levels(datme[,2])[pnl],"copy"],lwd = 2, col = "black")
                  k=k+1

      panel.stripplot(x,y, ...)
   }
             }
       )

or using panel.groups

stripplot(copy ~ factor(positivity)|factor(stimulation, levels = 
c("PHA","Rv2654","CFP10","Unst.","Rv3615c", "Rv3873","ESAT6", "Rv3879")),
       my.data,
       group = positivity,
       hor=F,
       layout = c(2,4),
       scales = list(x = list(at = c(1,2), labels = c("N","P")),
                     y= list(relation = "free")),
       jitter.data=TRUE, pch=c(16,1), col="black",
       ylab=expression(bold("Copy")),
       xlab=expression(bold("Stimulation")),
       main="Plot",
       par.settings = list(strip.background=list(col="white")),
       par.strip.text=list(font=2),
       key = key.plot,
       panel = panel.superpose,
       panel.groups = function(x, y, group.number, ...) {

                        panel.segments(x0= x-0.25, x1=x+0.25, y0=mean(y), 
y1=mean(y), lty = c(1:2)[group.number],
                        lwd=c(2:1)[group.number], col = c(1:2)[group.number])

                        panel.stripplot(x,y, ...)
             }
      )

Regards

Duncan Mackay

-----Original Message-----
From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On 
Behalf Of Luigi Marongiu
Sent: Wednesday, 30 April 2014 03:58
To: r-help@r-project.org
Subject: [R] set axis limit in lattice

Dear all,

I would like to set the axis of a figure using the max() so to have
more control on the limits of the axis -- this because in the actual
case more independent figures are generated from the same dataframe
and these must have the same axis scale.

Since the figure is generated using lattice device, the syntax is too
complicated for me: when I place the xlim=c(0,Y) in the arguments —
where Y is obtained using max(data) — there is no result. In basic R
this argument would work virtually in any position.

Any tip?

Best regards

Luigi

 ####CODE
### open plot library
library(lattice)
my.data<-structure(list(
   column_1 = 1:120,
   column_2 = structure(c(
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8,
 1,2,3,4,5,6,7,8), .Label = c("Unst.", "ESAT6", "CFP10", "Rv3615c",
"Rv2654", "Rv3879", "Rv3873", "PHA"), class = "factor"),
 column_3 = structure(c(
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0)),
     column_4 = c(
 
192.0519108,183.6403531,53.46798757,83.60638077,69.60749873,159.4706861,256.8765622,499.2899303,
 
2170.799076,1411.349719,2759.472348,2098.973397,2164.739515,1288.676574,1611.486543,6205.229575,
 
870.7424981,465.9967135,191.8962375,864.0937485,2962.693675,1289.259137,2418.651212,7345.712517,
 0,168.1198893,674.4342961,101.1575401,47.81596237,0,0,1420.793922,
 
142.6871331,5.466468742,291.9564635,80.73914133,73.02239621,64.47806871,144.3543635,3167.959757,
 
3164.748333,1092.634557,28733.20269,1207.87783,729.6090973,151.8706088,241.2466141,9600.963594,
 
1411.718287,12569.96285,1143.254476,6317.378481,16542.27718,79.68025792,1958.495138,7224.503437,
 
208.4382941,69.48609769,656.691151,0.499017582,7114.910926,187.6296174,41.73980805,8930.784541,
 
4.276752185,0.432300363,60.89228665,1.103924786,0.490686366,1.812993239,7.264531581,1518.610307,
 
2172.051528,595.8513744,17141.84336,589.6565971,1340.287628,117.350942,593.7034054,24043.61463,
 
0,81.83292179,1539.864321,36.41722958,8.385131047,161.7647376,65.21615696,7265.573875,
 
97.84753179,154.051827,0.613835842,10.06138851,45.04879285,176.8284258,18795.75462,30676.769,
 
5780.34957,944.2200834,2398.235596,1083.393165,2541.714557,1251.670895,1547.178549,1792.679176,
 
3067.988416,8117.210173,23676.02226,8251.937547,17360.80494,18563.61561,16941.865,31453.96708,
 
2767.493803,4796.33016,12292.93705,3864.657567,9380.673835,14886.44683,8457.88646,26050.47191)),
.Names = c("row", "stimulation", "positivity", "copy"), row.names =
c(NA, -120L),
 class = "data.frame")

key.plot<-list(
  space="top", columns=2,
  text=list(c("Positive", "Negative"), col="black"),
  points=list(pch=c(16,1), col="black"))

datmeA <- aggregate(copy ~ positivity+stimulation, my.data, median, na.rm = T)

X<-c(0.7, 1.3, 1.7, 2.3)

Y<-max(copy)

stripplot(
  copy ~ factor(positivity)|factor(stimulation, levels = c("Unst.",
"ESAT6","CFP10","Rv3615c", "Rv2654","Rv3879", "Rv3873","PHA")),
       my.data,
       group = positivity,
       hor=F,
       layout = c(8,1),
       scales = list(x = list(at = c(1,2), labels = c("N","P"))),
       jitter.data=TRUE, pch=c(16,1), col="black",
       ylab=expression(bold("Copy")),
       xlab=expression(bold("Stimulation")),
       main="Plot",
       par.settings = list(strip.background=list(col="white")),
       par.strip.text=list(font=2),
       key = key.plot,
       panel = function(x, y, ...)
  {
            pnl = panel.number()
  k<-0
  for (i in 1:2){
   datme<-subset(datmeA, positivity==i-1)
             w<-i+k
                   panel.segments(x0 = X[w], y0 =  datme[datme[,2]==
levels(datme[,2])[pnl],"copy"],
                                  x1 = X[w+1],  y1 = datme[datme[,2]==
levels(datme[,2])[pnl],"copy"],lwd = 2, col = "black")
                  k=k+1

      panel.stripplot(x,y, ...)
   }
             }
       )

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

______________________________________________
R-help@r-project.org 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 via email to