Diagrama de dispersión 3D

En el marco de datos mtcars del paquete datasets aparecen 32 modelos de coches con sus correspondientes datos técnicos. El script que se presenta a continuación genera un gráfico de dispersión en 3D atendiendo a la potencia, el peso y el consumo de cada automóvil.  

#INICIO -------------------------
rm(list=ls(all=TRUE))

#Cargamos el marco de datos mtcars
library(datasets);data(mtcars);attach(mtcars)

#Creamos la variable lk que indica el consumo en litros por cada 100 km
mtcars$lk<-round(235.29/mpg,2)
#Creamos la variable peskg que indica el peso en kg de cada coche
mtcars$peskg<-round(wt*0.453592*1000,0)
#Creamos la variable pcolor para asignar un color a cada coche según el número de cilindros
mtcars$pcolor[cyl==4]<-"magenta"; mtcars$pcolor[cyl==6]<-"darkgreen";mtcars$pcolor[cyl==8]<-"blue"
attach(mtcars)

#Cargamos el paquete gráfico que necesitamos
library(scatterplot3d)

with(
mtcars,
 {s3d<-scatterplot3d(hp,peskg,lk, #Ejes X,Y,Z
      color=pcolor,pch=19,     
      type="h",lty.hplot=1,                      #Tipo de líneas verticales
      scale.y=0.8,                                   #Reducimos la escala del eje Y en un 20%
      box=FALSE,           
      main="Diagrama de dispersión 3D - Modelos de coches (mtcars)",
      xlab="Potencia (CV)",
      ylab="Peso (kg)",
      zlab="Litros/100 km")
 s3d.coords<-s3d$xyz.convert(hp,peskg,lk)
      text(s3d.coords$x,s3d.coords$y,           #Coordenadas X e Y
      labels=row.names(mtcars),   
      pos=4,cex=0.55)                      #Situación a la dcha. de cada punto y contracción del texto del 45%

#Añadimos una leyenda
legend("topleft",
     bty="n",cex=0.7,
     horiz=TRUE,         
     title="Número de cilindros",
     c("4","6","8"), fill=c("magenta","darkgreen","blue"))}
)

#Añadimos retículas en los planos principales. Previamente debemos cargar el paquete FactoClass
library(FactoClass)
addgrids3d(data.frame(hp,peskg,lk),grid = c("xy", "xz", "yz"),scale.y=0.8,col.grid="red")
#FIN -------------------------

No hay comentarios:

Publicar un comentario