Oops - that is "reply all" On Fri, Apr 20, 2012 at 5:29 PM, David Winsemius <dwinsem...@comcast.net> wrote: > > I'm a bit puzzled by this exchange. I know there is a 'panel.locfit', but > you two are spelling it differently. Can you explain why you are doing so? >
Hi David, Thanks for stepping in. panel.Locfit is the OP's local function (or just a wrapper ?) which I believe is here http://www.mail-archive.com/r-help@r-project.org/msg167164.html Note the two errors OP encountered (solved down the thread) were caused by the way he called the function in xyplot, not by panel.Locfit itself, which I did not modify. I guess now the issue is how to generalize panel.Locfit somehow, but I am not sure how. I suspect the problem is not my understanding but that there really isn't any one specific problem here for the list to solve, though, again, I am known for misinterpreting OP requests... :) >> ?panel.locfit As I said, I am unfamiliar with the package - but this doesn't surprise me. Thank you for pointing it out, wish you've noticed the exchange sooner... Cheers >> ?panel.Locfit > No documentation for ‘panel.Locfit’ in specified packages and libraries: > you could try ‘??panel.Locfit’ > >> ?panel.locfit > > {locfit} R Documentation > Locfit panel function > > Description > > This panel function can be used to add locfit fits to plots generated by > trellis. > > > >> I am trying to construct a function/s to cover as many of the normal >> situations as possible. >> Usually I have to amend colours lines etc to distinguish the data. >> >> I want to cover a number of situations >> 1 Conditioned by panel no groups >> 2 Conditioned by panel and groups. >> 3 Multiple values for above - to show colleagues (EDA) >> 4 Conditioned by panel and groups + an overall fit for all the data within >> a panel >> 5 Several y values in a panel eg Y1+Y2 and outer = FALSE with a fit for >> each of Y1 and Y2 >> >> I am trying to cover as many of the above situations in 1 function before >> resulting to trellis.focus or >> overlaying. The graphs that I normally create are not simple, generally >> involving useOuterStrips >> which may have different y scales for panel rows (combindeLimits/manual) >> and different panel row heights. >> >> locfit is like loess but 2 arguments for smoothing; the degree of >> smoothing produced by the defaults >> is approximately that of loess but I normally need less smoothing (the >> same would be apply for loess). >> >> Most of the questions to Rhelp are for 1 with just a small number for 5 >> and they are not applicable here >> and understanding the requirements for passing arguments in these >> different situations I find difficult. >> I would like to reduce the number of panel functions to the minimum to >> cover the general situaltions because >> my graphs are usually not normal and then add to them for a particular >> situation. >> >> Regards >> >> Duncan >> >> >> At 01:38 21/04/2012, you wrote: >>> >>> Duncan, >>> First off, I admit it is not clear to me what you are trying to >>> achieve and more importantly, why? by "why" I mean 1) I don't see the >>> advantage of writing one general panel function for completely >>> different situations (one/multiple smoothers, grouping levels etc.) 2) >>> your intended result as I understand it seems rather cluttered, google >>> <chartjunk>. 3) I am unfamiliar with locfit package, but are we >>> reinventing the wheel here ? i.e. will modifying settings in xyplot(y >>> ~x, xx, groups = Farm, type=c('p','smooth')) achieve the same ? >>> >>> With your initial reproducible example (thank you) it was easy to >>> eliminate the errors, but clearly the resulting plots are not what you >>> intended (continue inline): >>> >>> On Thu, Apr 19, 2012 at 4:23 PM, Duncan Mackay <mac...@northnet.com.au> >>> wrote: >>> <snip> >>> > 3. What I want to be able to add in the above is extra lines with >>> > different >>> > values of nn. >>> > I think I will have to modify panel.Locfit so that it goes through >>> > different values of nn in each of the panels and groups if I want >>> > different >>> > colours for extra lines with different nn values >>> >>> Yes you could. There are several options: >>> add group.number to the arguments of panel.locfit and use it to make >>> nn a vector, along the lines of >>> panel.foo <- function(x,y,group.number,theta,...){ >>> smpar <- theta[group.number] >>> panel.loess(x,y,smpar,...) >>> panel.xyplot(x,y,...) >>> } >>> >>> xyplot(y~x,xx,group=Farm,theta=c(4,1,.4),panel=panel.superpose,panel.groups=panel.foo) >>> >>> # or >>> xyplot(y~x|Farm,xx,group=Padd,theta=c(.6,1), >>> panel=panel.superpose,panel.groups=panel.foo) >>> >>> Here you will need to modify the Farm group to 6 levels - 3*two >>> smoothers. >>> >>> You could make nn a list and loop over it inside the panel function. >>> Looks like you tried something like that with specifying 2 >>> panel.Locfit, one suggestion to your code: >>> >>> panel.Locfit(x,y,...) # default 0.7 >>> panel.Locfit(x,y,nn=0.9) # i.e. remove the >>> ... to avoid clashes >>> >>> Finally, use ?trellis.focus to plot the second smoother "post-hoc". >>> also the latticeExtra package has many useful tools to create layers >>> of the same (or different) plot with different settings. >>> >>> > 4 Produce an extra line for a fit for all the groups in 1/2+ panels. >>> > As for 3 but I do not know how to group all the x and y's for each >>> > of the >>> > panes using panel.groups >>> >>> Why does it matter ? seems you have failed to learn the lesson from >>> the first post - the same functionality applies to 1 as to multiple >>> panels. Does each panel have a different grouping structure ? use >>> packet.number() for panels similar to group.number idea. >>> >>> > I need to do this and then scale up for a panel function to include >>> > confidence bands >>> >>> than expand the xlim,ylim or scales in ?xyplot >>> >>> > >>> > For the record making Farm and Padd factors. With 1 panel and groups = >>> > Farm >>> > works with the extra line the same colour for its group >>> > a similar situation for the three panels when conditioned by Farm and >>> > groups >>> > = Pad >>> >>> ???? >>> >>> Like I said I am a little lost on this problem but I hope this helps >>> giving some direction. >>> Cheers >>> >>> >>> > >>> > xyplot(y ~x, xx, >>> > groups = Farm, >>> > >>> > par.settings = list(strip.background = list(col = >>> > "transparent"), >>> > superpose.line = list(col = >>> > c("black","grey"), >>> > lwd = >>> > c(1,2,3), >>> > lty = >>> > c(2,1,3)), >>> > superpose.symbol = list(cex = c(0.8, >>> > 0.7,0.7), >>> > col = >>> > c("red","black","blue"), >>> > pch = c(20,4,16)) >>> > ), >>> > auto.key=list(lines=T,points = T,rectangles=F), >>> > >>> > panel = panel.superpose, >>> > panel.groups=function(x,y, ...){ >>> > >>> > panel.xyplot(x,y,...) >>> > panel.Locfit(x,y,...) # default 0.7 >>> > panel.Locfit(x,y,nn=0.9,...) >>> > >>> > } >>> > ) ## xyplot >>> > >>> > >>> > Regards >>> > >>> > Duncan >>> > >>> > >>> > At 02:12 20/04/2012, you wrote: >>> >> >>> >> On Thu, Apr 19, 2012 at 2:30 AM, Duncan Mackay >>> >> <mac...@northnet.com.au> >>> >> wrote: >>> >> > Hi >>> >> > >>> >> > xyplot(y ~x|Farm,xx, >>> >> > groups = Padd, >>> >> > panel = panel.superpose, >>> >> > panel.groups=function(x,y, ...){ >>> >> > panel.Locfit(x,y,...) >>> >> > panel.xyplot(x,y,...) >>> >> > } >>> >> > ) ## xyplot >>> >> > >>> >> > The above works nicely and also without par.setting giving lattice >>> >> > defaults. >>> >> > The par.setting is handy for a lot of graphs that I do. >>> >> > >>> >> > But when I tried a 1 panel plot I get the error message. >>> >> > >>> >> > xyplot(y ~x,xx, >>> >> > groups = Farm, >>> >> > auto.key=TRUE, >>> >> > panel = function(x,y, ...){ >>> >> > >>> >> > panel.Locfit(x,y,...) >>> >> > panel.xyplot(x,y,...) >>> >> > } >>> >> > ) >>> >> > >>> >> >>> >> These two plots are NOT THE SAME. Did you want the same as the first >>> >> but with groups being Farm and Padd ignored ? in that case you (again) >>> >> need a panel.groups: >>> >> >>> >> xyplot(y ~x,xx, >>> >> groups = Farm, >>> >> auto.key=TRUE, >>> >> panel = panel.superpose,panel.groups=function(x,y,...){ >>> >> panel.Locfit(x,y,...) >>> >> panel.xyplot(x,y,...) >>> >> } >>> >> ) >>> >> >>> >> >>> >> > If I want to plot another curve with different smoothing >>> >> > but gives an error message without par.settings if i want to add >>> >> > panel.Locfit(x,y,nn= 0.9,lwd = c(1,2,3), ...) >>> >> > >>> >> > Error using packet 1 >>> >> > formal argument "Iwd" matched by multiple actual arguments >>> >> >>> >> It is all in the way you initially specified how to pass the arguments >>> >> for panel.Locfit. This works without error: >>> >> >>> >> xyplot(y ~x,xx, >>> >> groups = Farm, >>> >> auto.key=TRUE,lwd=1:3, >>> >> panel = panel.superpose,panel.groups=function(x,y,nn,...){ >>> >> panel.Locfit(x,y,nn=.9,...) >>> >> panel.xyplot(x,y,...) >>> >> } >>> >> ) >>> >> >>> >> >>> >> HTH >>> >> >>> >> >>> >> >>> >> > I also need to plot a smoothed line for all groups trying groups, >>> >> > subscripts >>> >> > and panel.groups as arguments without success >>> >> > >>> >> > Any solutions to solve the above will be gratefully received and >>> >> > faithfully >>> >> > applied. >>> >> > >>> >> > Duncan >>> >> > >>> >> > sessionInfo() >>> >> > R version 2.15.0 (2012-03-30) >>> >> > Platform: i386-pc-mingw32/i386 (32-bit) >>> >> > >>> >> > locale: >>> >> > [1] LC_COLLATE=English_Australia.1252 >>> >> > LC_CTYPE=English_Australia.1252 >>> >> > LC_MONETARY=English_Australia.1252 LC_NUMERIC=C >>> >> > LC_TIME=English_Australia.1252 >>> >> > >>> >> > attached base packages: >>> >> > [1] datasets utils stats graphics grDevices grid >>> >> > methods >>> >> > base >>> >> > >>> >> > other attached packages: >>> >> > [1] locfit_1.5-7 R.oo_1.9.3 R.methodsS3_1.2.2 >>> >> > foreign_0.8-49 >>> >> > chron_2.3-42 MASS_7.3-17 latticeExtra_0.6-19 >>> >> > RColorBrewer_1.0-5 >>> >> > [9] lattice_0.20-6 >>> >> > >>> >> > loaded via a namespace (and not attached): >>> >> > [1] tools_2.15.0 >>> >> > >>> >> > >>> >> > > > >> > > David Winsemius, MD > West Hartford, CT > > > ______________________________________________ > 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.