RStudio e a função manipulate()

June 1, 2011
By

This post was kindly contributed by Ridículas - go there to comment and to read the full post.

Manipulando ângulo de observação e gradiente de cores de um gráfico tridimensional com as ferramentas do RStudio.

O RStudio é um dos vários disponíveis editores para script R. Uma das suas peculiaridades é o pacote manipulate. Esse pacote é parte integrante do RStudio e fica disponível apenas com a sua instalação.

A função manipulate::manipulate() permite que você use os gráficos do R de forma interativa. Ou seja, através de deslizadores (slider), seletores (picker) e opções (checkbox) você é capaz de mudar aspectos gráficos. A documentação da função traz exemplos interessantes. Nessa ridícula eu implementei dois exemplos. O primeiro é para escolher o ângulo de observação de uma superfície de resposta (inclui escolha do gradiente de cores). O segundo permite que você entenda como funciona a estimação kernel de densidade.

Com a manipulate() fica muito mais simples construir funções para obter valores iniciais em modelos de regressão não linear. Até a próxima ridícula.

#-----------------------------------------------------------------------------
# dados para um gráfico tridimensional

da <- expand.grid(x=seq(0,10,l=30), z=seq(0,10,l=30))
da$y <- with(da, x+z+0.2*x*z) # gera dados

#-----------------------------------------------------------------------------
# escolher o ângulo de observação e o esquema de cores

manipulate({
             ## faz o gráfico tridimensional
             colr <- colorRampPalette(c(c1, c2, c3), space="rgb")
             arrows <- arr
             wireframe(y~x+z, data=da, scales=list(arrows=arrows),
                       col="gray30", col.contour="gray30",
                       col.regions=colr(100),  drape=TRUE,
                       screen=list(z=z.angle, x=x.angle)
                       )
           },
           ## controla o valor dos angulos e das cores
           z.angle=slider(0, 360, step=10, initial=40),
           x.angle=slider(-180, 0, step=5, initial=-60),
           arr=checkbox(FALSE, "show.arrows"),
           c1=picker("red","yellow","orange","green","blue","pink","violet"),
           c2=picker("red","yellow","orange","green","blue","pink","violet"),
           c3=picker("red","yellow","orange","green","blue","pink","violet")
           )

#-----------------------------------------------------------------------------
# gráfico de densidade controlando o bandwidth e tipo de função kernel

x <- rgamma(300, 3, 7)

manipulate({
             plot(density(x, bw=bw, kernel=kernel))
             if(show.rug==TRUE) rug(x)
           },
           kernel=picker("gaussian", "epanechnikov", "rectangular",
             "triangular", "biweight","cosine",
             "optcosine"),
           bw=slider(0.01, 0.15, step=0.003, initial=0.05),
           show.rug=checkbox(TRUE, "show rug")
           )

#-----------------------------------------------------------------------------

Tags: , , , , , , ,

Comments are closed.