Luigi Marongiu
2014-Apr-26 16:06 UTC
[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.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") 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))
Duncan Mackay
2014-Apr-27 01:06 UTC
[R] lattice plot formatting: pch, abbreviation and labels
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: mackay at northnet.com.au -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Luigi Marongiu Sent: Sunday, 27 April 2014 02:07 To: r-help at 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 at 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.