Dylan Beaudette
2007-Jan-28 20:59 UTC
[R] extra panel arguments to plot.nmGroupedData {nlme}
Greetings, I have a groupedData (nmGroupedData) object created with the following syntax: Soil <- groupedData( ksat ~ conc | soil_id/sar/rep, data=soil.data, labels=list(x='Solution Concentration', y='Saturated Hydraulic Conductivity'), units=list(x='(cmol_c)', y='(cm/s)') ) the original data represents longitudinal observations in the form of: 'data.frame': 1197 obs. of 5 variables: $ soil_id: Factor w/ 19 levels "Arbuckle","Campbell",..: 16 16 16 16 16 16 16 16 16 16 ... $ sar : int 12 12 12 12 12 12 12 6 6 6 ... $ conc : num 500 100 50 10 5 1 0.003 500 100 50 ... $ rep : Factor w/ 3 levels "C1","C2","C3": 1 1 1 1 1 1 1 1 1 1 ... $ ksat : num 0.000214 0.000207 0.000198 0.000160 0.000108 ... the default plotting behaviour of this groupedData object works as expected: plot( Soil, collapse=1, inner=~sar, aspect='fill', scales=list( x=list(log=TRUE), y=list(log=TRUE)) ) ... however, there is no way for me to alter the panels... for example, attempting to add a horizontal line with a call to panel.abline= ... : plot( Soil, collapse=1, inner=~sar, aspect='fill', scales=list( x=list(log=TRUE), y=list(log=TRUE)), FUN=mean, panel= function(x,y, subscripts, groups) { panel.xyplot(x, y, type='o') panel.abline(h=0.005, col='black', lty=2) } ) ... results in an identical plot. Trying to re-create the results of plot.nmGroupedData with a direct call to xyplot() has thus far been unsucsessful- as I cannot figure out how to specifiy the original formula in a meaningful way to xyplot: ksat ~ conc | soil_id/sar/rep . Any tips on passing panel arguments to plot.nmGroupedData() would be greatly appreciated. Cheers, Dylan
Deepayan Sarkar
2007-Jan-29 19:54 UTC
[R] extra panel arguments to plot.nmGroupedData {nlme}
On 1/28/07, Dylan Beaudette <dylan.beaudette at gmail.com> wrote:> Greetings, > > > I have a groupedData (nmGroupedData) object created with the following syntax: > > Soil <- groupedData( > ksat ~ conc | soil_id/sar/rep, > data=soil.data, > labels=list(x='Solution Concentration', y='Saturated Hydraulic Conductivity'), > units=list(x='(cmol_c)', y='(cm/s)') > ) > > > the original data represents longitudinal observations in the form of: > 'data.frame': 1197 obs. of 5 variables: > $ soil_id: Factor w/ 19 levels "Arbuckle","Campbell",..: 16 16 16 16 > 16 16 16 16 16 16 ... > $ sar : int 12 12 12 12 12 12 12 6 6 6 ... > $ conc : num 500 100 50 10 5 1 0.003 500 100 50 ... > $ rep : Factor w/ 3 levels "C1","C2","C3": 1 1 1 1 1 1 1 1 1 1 ... > $ ksat : num 0.000214 0.000207 0.000198 0.000160 0.000108 ... > > the default plotting behaviour of this groupedData object works as expected: > plot( > Soil, > collapse=1, inner=~sar, aspect='fill', > scales=list( x=list(log=TRUE), y=list(log=TRUE)) > ) > > ... however, there is no way for me to alter the panels... > > for example, attempting to add a horizontal line with a call to > panel.abline= ... : > plot( > Soil, > collapse=1, inner=~sar, aspect='fill', > scales=list( x=list(log=TRUE), y=list(log=TRUE)), > FUN=mean, > panel= function(x,y, subscripts, groups) { > panel.xyplot(x, y, type='o') > panel.abline(h=0.005, col='black', lty=2) > } > ) > > ... results in an identical plot. Trying to re-create the results of > plot.nmGroupedData with a direct call to xyplot() has thus far been > unsucsessful- as I cannot figure out how to specifiy the original > formula in a meaningful way to xyplot: ksat ~ conc | soil_id/sar/rep .You might try something like ksat ~ conc | soil_id:sar:rep (also see ?interaction for a version with more control) -Deepayan