cvempAPI = function (n){ require(tcltk); source('cvempirique.R') y<-rnorm(n^2); SliderValue <- tclVar(min(4, floor(n^2/2))); Lambda <- tclVar(20); typeGraph <- tclVar('Histo'); dataSource <- tclVar('Gaussian'); kernelType <- tclVar('Epanechnikov') Gauss <- tclVar(F); autoAdjust <- tclVar(F); base <- tktoplevel(); tkwm.title(base,'Convergence de la mesure empirique'); tt <- tkframe(base, borderwidth=2) lblfrm <- tkframe(tt,borderwidth=2,relief='groove') SliderValueLabel <- tklabel(lblfrm, text=as.character(as.integer(tclvalue(SliderValue))^2), width=6); lambdaValueLabel <- tklabel(lblfrm, text=as.character(as.double(tclvalue(Lambda))/50)); tkpack(lblfrm, SliderValueLabel, tklabel(lblfrm,text=' points'), tklabel(lblfrm, text=' lambda = '), lambdaValueLabel, side='left'); tkpack(tt, lblfrm, side='top') actionPerformed = function(...){ k<-as.integer(tclvalue(SliderValue))^2; if (as.integer(tclvalue(autoAdjust)) ==0) {lambda <- as.double(tclvalue(Lambda))/50;} else{ lambda <- 2/k^(1/3); tclvalue(Lambda) <- 50*lambda;} rePlot(tclvalue(typeGraph), y[1:k], lambda, tclvalue(dataSource), as.integer(tclvalue(Gauss)) != 0, tclvalue(kernelType)); tkconfigure(SliderValueLabel, text=as.character(k)); tkconfigure(lambdaValueLabel, text=as.character(as.double(tclvalue(Lambda))/50)); } reset = function (...){ if (tclvalue(dataSource)=='Gaussian') {y<<-rnorm(n^2);} else if (tclvalue(dataSource)=='Mixt2') {y<<-rnorm(n^2)/2+4*(runif(n^2)<1/2)-2;} else if (tclvalue(dataSource)=='Mixt3') {y<<-rnorm(n^2)/2+2*floor(3*runif(n^2))-2;} actionPerformed(); } ptsFrame <- tkframe(tt, borderwidth=2, relief='groove'); slider <- tkscale(ptsFrame, from=2, to=n, length=600, showvalue=F, variable=SliderValue, resolution=1, orient='horizontal', command=actionPerformed) tkpack(ptsFrame, tklabel(ptsFrame, text='Nb points', width=10), slider, side='left') lambdaFrame <- tkframe(tt, borderwidth=2, relief='groove'); sliderLambda <- tkscale(lambdaFrame, from=1, to=100, length=600, showvalue=F, variable=Lambda, resolution=1, orient='horizontal', command=actionPerformed) tkpack(lambdaFrame, tklabel(lambdaFrame, text='Lambda', width=10), sliderLambda, side='left') tkpack(tt, ptsFrame, lambdaFrame, side='bottom') cbfrm <- tkframe(tt, borderwidth=2,relief='groove') cbGauss <- tkcheckbutton(cbfrm, command=actionPerformed, text='ref', variable=Gauss) cbAuto <- tkcheckbutton(cbfrm, command=actionPerformed, text='Auto', variable=autoAdjust) lsep <-tklabel(cbfrm, text=' Display: '); lhist <- tklabel(cbfrm, text='Histo'); lker <- tklabel(cbfrm, text='Kernel'); lfr <- tklabel(cbfrm, text='FR') rbhist <- tkradiobutton(cbfrm, command=actionPerformed); rbker <- tkradiobutton(cbfrm, command=actionPerformed); rbfr <- tkradiobutton(cbfrm, command=actionPerformed); tkconfigure(rbhist,variable=typeGraph, value='Histo'); tkconfigure(rbker,variable=typeGraph, value='Kernel'); tkconfigure(rbfr,variable=typeGraph, value='Fct Rép'); lsep2 <-tklabel(cbfrm, text=' Data: '); l1g <- tklabel(cbfrm, text='Gaussian'); l2g <- tklabel(cbfrm, text='Mixt2'); l3g <- tklabel(cbfrm, text='Mixt3') rb1g <- tkradiobutton(cbfrm, command=reset); rb2g <- tkradiobutton(cbfrm, command=reset); rb3g<-tkradiobutton(cbfrm,command=reset); tkconfigure(rb1g,variable=dataSource, value='Gaussian'); tkconfigure(rb2g, variable=dataSource, value='Mixt2'); tkconfigure(rb3g, variable=dataSource, value='Mixt3'); lsep3 <-tklabel(cbfrm, text=' Kernel: '); lbgk <- tklabel(cbfrm, text='Gaussian'); lbek <- tklabel(cbfrm, text='Epanechnikov'); rbgk <- tkradiobutton(cbfrm, command=reset); rbek <- tkradiobutton(cbfrm, command=reset); tkconfigure(rbgk, variable=kernelType, value='Gaussian'); tkconfigure(rbek, variable=kernelType, value='Epanechnikov'); tkpack(cbfrm, cbAuto, cbGauss, side='left'); tkpack(cbfrm, rbfr, lfr, rbker, lker, rbhist, lhist, lsep, rb3g, l3g, rb2g, l2g, rb1g, l1g, lsep2, rbek, lbek, rbgk, lbgk, lsep3, side = 'right'); tkpack(tt, cbfrm, side='left'); butfrm <- tkframe(tt, borderwidth=2, relief='groove'); btReset <- tkbutton(butfrm, command=reset, text='Reset'); btQuit <- tkbutton(butfrm, text='Quit', command=function() tkdestroy(base)); tkpack(butfrm, btReset, btQuit, side='left'); tkpack(tt, butfrm, side='right'); tkfocus(slider) } cvempAPI(100);