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