| 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")
)
#-----------------------------------------------------------------------------