El paquete plotly permite la construcción de gráficas de alta calidad, incorporando la interactividad en los gráficos, mostrando botones para hacer zoom en una parte de la gráfica, redefinir los ejes X e Y, mostrar la información que contiene cada dato, mostrar datos filtrando por uno o varios factores… Además, son gráficos de tipo “responsive”: se adaptan a las dimensiones de la ventana en que aparecen.
La forma de construir los gráficos es:
# cargamos las librerías
library(plotly)
library(ggplot2)
# cargamos los datos
library(readxl)
#Importemos el conjunto de datos
data <- read_excel("RiesgoPobrezaTasa.xls")
#un factor
plot_ly(data,x=~riesgo1,y=~riesgo2,type="scatter",mode = "markers+text",color=~ccaa)
En esta gráfica, podemos:
Una cosa también interesante es que en el menú de la derecha (por comunidades), podemos pinchar en el circulito de color y seleccionar o quitar las comunidades que se muestran.
También podemos introducir una combinación de dos factores.
plot_ly(data,x=~riesgo1,y=~riesgo2,type="scatter",mode = "markers+text",color=~ccaa,symbol = ~agno)
Poniendo el cursor sobre un dato, obtenemos la información de ese dato.
Podemos incorporar una animación, con el comando
frame
.
plot_ly(data,x=~riesgo1,y=~riesgo2,type="scatter",color=~ccaa,frame = ~agno)
plotly
es usar un gráfico ya
generado por ggplot.###Generamos 50 datos en torno al (3,-4), 50 datos en torno a la N(-2,-4) y los últimos 50
#en torno a (0,0)
x<-matrix(rnorm(300), ncol=2)
x[1:50,1]<-x[1:50,1]+3
x[1:50,2]<-x[1:50,2]-4
x[51:100,1]<-x[51:100,1]-2
x[51:100,2]<-x[51:100,2]-4
#aplicamos el método de k-medias para identificar clusters (agrupaciones de puntos)
km2<-kmeans(x,centers=2,nstart=20) ##forzando 2 clusters
km3<-kmeans(x,centers=3,nstart=20) ##forzando 3 clusters
##definimos el data.frame a usar, las variables km2$cluster y km3$cluster nos dicen en
#qué cluster se encuentra cada dato (toman los valores 1,2 o 3)
datos<-data.frame(x,as.factor(km2$cluster),as.factor(km3$cluster))
g<-ggplot(datos)+
aes(x=X1,y=X2,colour=as.factor(km3$cluster),shape=as.factor(km2$cluster))+
geom_point()+
labs(title="Clusters",x="x1",y="x2")+
scale_colour_discrete(name="km3 por colores")+
scale_shape_discrete(name="km2 por formas")
g
##aunque vemos que plotly nos "descoloca" las etiquetas: clasifica cada elemento
#en los dos clusters. Los puntos verdes (2,1) son los que están en el cluster 1 para la #clasificación hecha por km3 y el el 1 para la clasificaión km2
ggplotly(g)
Para guardar el gráfico, podemos usar el botón Export del menú Viewer que aparece cuando ejecutamos el código. Nos permite exportar como imagen, copiar al portapeles o guardar como un archivo html, lo cual nos permitirá compartirlo, para que otras personas puedan usar la interactividad del gráfico, que es el objetivo principal de plotly.
Muy interesante es el uso de plotly
para la
visualización de datos en 3 dimensiones.
Podemos simplemente pintar una función
x <- seq(-20, 20, length.out = 51)
y <- x
f<- function(x,y)
{
r=sqrt(x^2+y^2)
sin(r)/r
}
z <- outer(x, y, f)
fig <- plot_ly(z=~z)
fig <- fig %>% add_surface()
fig
Y añadir algún detalle más
fig <- plot_ly(z = ~z) %>% add_surface(
contours = list(
z = list(
show=TRUE,
usecolormap=TRUE,
highlightcolor="#ff0000",
project=list(z=TRUE)
)
)
)
fig <- fig %>% layout(
scene = list(
camera=list(
eye = list(x=1.87, y=0.88, z=-0.64)
)
)
)
fig
Usando los datos de volcano
, que vienen incorporados en
la base de datos de R:
fig <- plot_ly(z = ~volcano)
fig <- fig %>% add_surface()
fig
Un poco más elaborado.
fig <- plot_ly(z = ~volcano) %>% add_surface(
contours = list(
z = list(
show=TRUE,
usecolormap=TRUE,
highlightcolor="#ff0000",
project=list(z=TRUE)
)
)
)
fig <- fig %>% layout(
scene = list(
camera=list(
eye = list(x=1.87, y=0.88, z=-0.64)
)
)
)
fig