Forgot to cc to list Hi Luigi Our emails are apparently crossing
What you are doing is referencing down ONLY to the stimulation level and not the stimulation level + productivity level required for each of the N and P groups notch<-0.3 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() 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, ...) panel.stripplot(x,y, ...) } } ) 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, ...) the more lattice way is notch<-0.3 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 = panel.superpose, panel.groups = function(x, y, group.number, ...) { panel.segments(x0= x-notch, x1=x+notch, 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, ...) } ) Duncan -----Original Message----- From: Luigi Marongiu [mailto:marongiu.lu...@gmail.com] Sent: Wednesday, 30 April 2014 02:44 To: Duncan Mackay Subject: Re: [R] lattice plot formatting: pch, abbreviation and labels Dear Duncan, I think the solution is close by. I can now plot the segments directly with stripplot using a vector containing the required positions; the only problem is to generate 4 consecutive indeces using two nested loops -- using the subtraction of the index and a number I obtained the duplication of the values, as you can see in the second example. Many thanks, Luigi X<-c(0.7, 1.3, 1.7, 2.3) 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() for (i in 1:2){ datme<-subset(datmeA, positivity==i-1) k<-i-1 for (j in 1:2) { panel.segments(x0 = X[k+j], y0 = datme[datme[,2]== levels(datme[,2])[pnl],"copy"], x1 = X[k+j+1], y1 = datme[datme[,2]== levels(datme[,2])[pnl],"copy"],lwd = 2, col = c("magenta","grey")) } panel.stripplot(x,y, ...) } } ) #### this approach gives duplications: notch<-0.3 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() for (i in 1:2){ datme<-subset(datmeA, positivity==i-1) k<-i-1 for (j in 1:2) { panel.segments(x0 = j-notch, y0 = datme[datme[,2]== levels(datme[,2])[pnl],"copy"], x1 = j+notch, y1 = datme[datme[,2]== levels(datme[,2])[pnl],"copy"],lwd = 2, col = c("magenta","grey")) } panel.stripplot(x,y, ...) } } ) On Tue, Apr 29, 2014 at 10:26 AM, Duncan Mackay <dulca...@bigpond.com> wrote: > Hi Luigi > > Only minor changes needed. > > When you go back to a normal xyplot the rules of ratio variables apply the > x-axis default in your case something like pretty(range(x) > So the x-axis limits range from 0-1 > and the panel limits therefore are 0-1 +/- 4% > With strip stripplot being categorical the limits are for values 1 and 2 so > the top value for 2 is not being shown > (easily seen with str(xyplot object)) > > You missed out the assigning of groups to the segments. > You could do this by a for loop of 1:2 or by using groups/panel.groups. > I have not got the time to dig out the code to do it at the moment. > > xyplot(copy ~ positivity|stimulation, data = my.data, > group = factor(positivity), > as.table = TRUE, > layout = c(8,1), > xlim = c(-1,2), > scales = list(x = list(at = c(0,1), > labels = c("N","P"), > rot = 0)), > 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 = list(space="top", > columns=2, > text=list(c("Positive", "Negative"), col="black"), > points=list(pch=c(16,1), col="black")), > panel = function(x, y,...){ > pnl = panel.number() > #panel.abline(h = datmeA[datmeA[,2]== > levels(datmeA[,2])[pnl],"ratio"], col = c("red","black"), lty=3) > #for (j in 1:2){ > # with(subset(datmeA, (positivity == j-1 & stimulation == > levels(datmeA$stimulation)[pnl])), > # panel.abline(h = copy, lwd = 1, col = > c("red","black")[j], lty = 1) ) > for (j in 1:2){ > panel.segments(x0 = (j-1)-0.25, y0 = datmeA[datmeA[,2]== > levels(datmeA[,2])[pnl],"copy"], # amend to copy > x1 = (j-1)+0.25, y1 = datmeA[datmeA[,2]== > levels(datmeA[,2])[pnl],"copy"], > lwd = 2, col = c("magenta","grey")[j]) > } > > panel.stripplot(x,y, ...) > } > ) > If you wanted full N P then > > scales = list(x = list(at = c(0,1), > alternating = F, > labels = c("Negative","Positive"), > rot = 90)), # rot = 0 if labels as before > > Duncan > > -----Original Message----- > From: Luigi Marongiu [mailto:marongiu.lu...@gmail.com] > Sent: Tuesday, 29 April 2014 04:34 > To: Duncan Mackay > Subject: Re: [R] lattice plot formatting: pch, abbreviation and labels > > Dear Duncan, > sorry to pester you again with this, but probably the solution is > getting closer. following one of your previous tips i could write the > xyplot synthax as you suggested: > > 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) > > > #### HERE IS THE IMPORTANT BIT ### > > xyplot(copy ~ positivity|stimulation, > my.data, > group = positivity, > hor=F, > as.table = TRUE, > layout = c(8,1), > scales = list(x = list(alternating = FALSE, at = c(0.2,0.8), labels > = c("P","N"))), > 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 = list(space="top", columns=2, text=list(c("Positive", > "Negative"), col="black"), points=list(pch=c(16,1), col="black")), > panel = function(x, y, ...){ > pnl = panel.number() > panel.segments(x0 = x-0.25, y0 = datmeA[datmeA[,2]== > levels(datmeA[,2])[pnl],"ratio"], > x1 = x+0.25, y1 = datmeA[datmeA[,2]== > levels(datmeA[,2])[pnl],"ratio"], > lwd = 2, col = c("magenta","grey")) > panel.stripplot(x,y, ...) > } > ) > > ############################ > > beside beign less elegant than stripplot() -- there is no jittering > and requires the positions for the labels -- there are mainly two > problems: > 1. the dots are too close to the margins -- I tried to use the 'at' > argument but it did not work > 2. the segments are replicated -- there should be a 'panel.group' > somewhere but I obtained a lot of errors when I tried to place it. > > Wouldn't be easier to use the stripplot directly, using maybe a factor > to place the segments? I tried to place the panel.function in > stripplot but it did not work at all... > > 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 = list(space="top", columns=2, text=list(c("Positive", > "Negative"), col="black"), points=list(pch=c(16,1), col="black")), > panel = function(x, y, ...){ > pnl = panel.number() > panel.segments(x0 = x-0.25, y0 = datmeA[datmeA[,2]== > levels(datmeA[,2])[pnl],"ratio"], > x1= x+0.25, y1 = > datmeA[datmeA[,2]== levels(datmeA[,2])[pnl],"ratio"], > lwd = 2, col = c("magenta","grey")) > panel.stripplot(x,y, ...) > } > ) > > > Best wishes, > Luigi > > On Mon, Apr 28, 2014 at 2:25 AM, Duncan Mackay <dulca...@bigpond.com> wrote: >> Hi Luigi >> >> Here are 2 ways of doing it. >> >> The first is a "cheats" way ie easy. >> >> The second is a substitute for the proper way who's code eludes me at the >> moment. I changed the lty on the ablines as it appears confusing and as you >> are bolding it seems more appropriate. A better way may be to change 1 line >> type. >> >> 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 = list(space="top", >> columns=2, >> text=list(c("Positive", "Negative"), col="black"), >> points=list(pch=c(16,1), col="black")), >> panel = function(x, y,...){ >> pnl = panel.number() >> #panel.abline(h = datmeA[datmeA[,2]== >> levels(datmeA[,2])[pnl],"ratio"], col = c("red","black"), lty=3) >> >> panel.average(x, y, fun = mean, horizontal = F, lty = 3, >> col.line = c("red","black"), type = "l") >> >> panel.stripplot(x,y, ...) >> } >> ) >> >> 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 = list(space="top", >> columns=2, >> text=list(c("Positive", "Negative"), col="black"), >> points=list(pch=c(16,1), col="black")), >> panel = function(x, y,...){ >> pnl = panel.number() >> #panel.abline(h = datmeA[datmeA[,2]== >> levels(datmeA[,2])[pnl],"ratio"], col = c("red","black"), lty=3) >> for (j in 1:2){ >> with(subset(datmeA, (positivity == j-1 & stimulation == >> levels(datmeA$stimulation)[pnl])), >> panel.abline(h = copy, lwd = 1, col = >> c("red","black")[j], lty = 1) ) >> >> } >> >> panel.stripplot(x,y, ...) >> } >> ) >> >> Remember abline and panel.abline etc only take 1 line at a time so if you >> have more than 1 group you have 2 call it more than once >> >> Regards >> Duncan >> >> -----Original Message----- >> From: Luigi Marongiu [mailto:marongiu.lu...@gmail.com] >> Sent: Monday, 28 April 2014 04:03 >> To: Duncan Mackay >> Subject: Re: [R] lattice plot formatting: pch, abbreviation and labels >> >> Dear Duncan, >> may I bother you a bit more with the same data set? I would like now >> to add a segment corresponding to the median values, as we discussed >> antecedently. >> I have tried to use the code you wrote in the previous mails, but it >> hasn't worked. First I have found the aggregate medians values and >> assigned to datmeA, then pasted the code you wrote, but without >> success. Would be possible to substitute the panel.abline with >> panel.segments? but in this case how to tell lattice what are the >> values for "N" or "P"? >> Best wishes, >> Luigi >> >> CODE:::: >> 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) >> >> stripplot( >> copy ~ factor(positivity)|factor(stimulation, >> levels = c("Unst.", "ESAT6","CFP10","Rv3615c", "Rv2654", >> "Rv3879", "Rv3873","PHA")), >> group = positivity, >> my.data, >> 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() >> panel.abline(h = datmeA[datmeA[,2]== >> >> levels(datmeA[,2])[pnl],"ratio"], col = c("red","black"), lty=3) >> >> panel.stripplot(x,y, ...) >> } >> ) >> >> On Sun, Apr 27, 2014 at 2:06 AM, Duncan Mackay <dulca...@bigpond.com> wrote: >>> Hi Luigi >>> >>> You are typing things unnecessarily: do not use the attach command unless >>> absolutely necessary - it has unfortunate consequences. >>> It is better to use with or within. >>> alpha is not available with some devices with bad consequences if used; its >>> default is 1 anyway. >>> >>> Once you have stated a data.frame as the data object it is usually not >>> necessary to use the data.frame$ sign in to signify column names: use the >>> column names. >>> data = "a data.frame" is the equivalent to with >>> >>> You are reordering the levels of stimulation and changing the name of 1 so I >>> thought it was easiest to make a column stim and do things there otherwise >>> it the relevelling could be done in the data argument using the subset >>> argument. Then the change to "Unst" could be done by using strip = >>> strip.custom(factor.levels = ...), >>> >>> To change for the -/+ I made a group - the easiest way. >>> Have a look a changing the negative symbol to 20 or something else as it is >>> hard to visualise. You may vary things with changing cex (remember to have 2 >>> values 1 for each group). >>> >>> If you do str(xyplot object) you will get a big print of the object and >>> within that the x limits are shown as "0", "1" which means that the x values >>> are 1 and 2 >>> There is a command to get these things but I have forgotten it >>> >>> my.data$stimulation <- factor(levels = c("Unstimulated", >>> "ESAT6","CFP10","Rv3615c","Rv2654", "Rv3879", "Rv3873","PHA")) >>> my.data$stim <- factor(my.data$stimulation, labels = c("Unst.", >>> "ESAT6","CFP10","Rv3615c","Rv2654", "Rv3879", "Rv3873","PHA")) >>> my.data$pos <- ifelse(sign(my.data$copy) > 0, 2,1) >>> >>> stripplot(copy ~ factor(positivity)|stim,my.data, >>> groups = pos, >>> hor = F, >>> layout = c(8,1), >>> scales = list(x = list(at = c(1,2), >>> labels = c("N","P"))), >>> jitter.x = TRUE, >>> amount = 2, >>> 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) >>> ) >>> >>> 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-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On >>> Behalf Of Luigi Marongiu >>> Sent: Sunday, 27 April 2014 02:07 >>> To: r-help@r-project.org >>> Subject: [R] lattice plot formatting: pch, abbreviation and labels >>> >>> Dear all, >>> I am trying to use the lattice plot, but the syntax is quite >>> difficult. Specifically I have eight variables (1 to 8) each of them >>> further subdivided in two classes (negative=0 and positive=1). I am >>> using the stripplot() to represent these values. I would like to >>> represent the negative and positive values with black and white dots >>> so I have tried to use the argument pch=c(16, 1) both in the main >>> stripplot function and embedded in the scale argument. However the >>> resulting plot shows that some points are drawn with the pch=16 and >>> other with pch=1 irrespective of their class. >>> Is there a way to draw the values for the variable positivity = 0 with >>> pch=16 and those with positivity = 1 with pch=0? >>> >>> In addition I would like to change the labels under the axis from 0,1 >>> to N,P. However when I placed labels=c("N", "P") or labels=list("N", >>> "P") in the main stripplot() I did not obtained any difference and >>> when placed within the scale argument also the -labels were modified. >>> Is there a way to change the label 0 with N and the label 1 with P? >>> >>> final problem: I would like to abbreviate the "Unstimulated" box label >>> with "Unst.". I have tried the abbreviate=TRUE argument but again the >>> syntax is too complex for me and it did not work. >>> Is there a way to abbreviate the variables names? >>> >>> Thank you very much for your help. >>> Best wishes, >>> 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("Unstimulated", "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.2 >>> 466141,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.73 >>> 980805,8930.784541, >>> >>> 4.276752185,0.432300363,60.89228665,1.103924786,0.490686366,1.812993239,7.26 >>> 4531581,1518.610307, >>> >>> 2172.051528,595.8513744,17141.84336,589.6565971,1340.287628,117.350942,593.7 >>> 034054,24043.61463, >>> >>> 0,81.83292179,1539.864321,36.41722958,8.385131047,161.7647376,65.21615696,72 >>> 65.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,1694 >>> 1.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") >>> attach(my.data) >>> >>> stripplot(my.data$copy ~ >>> factor(my.data$positivity)|factor(my.data$stimulation, >>> levels = c("Unstimulated", "ESAT6","CFP10","Rv3615c", >>> "Rv2654", "Rv3879", "Rv3873","PHA")), >>> my.data, hor=F, layout = c(8,1), scales = list(relation = >>> "same"), >>> jitter.data=TRUE, alpha=1, 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)) >>> >>> ______________________________________________ >>> 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.