Hacer Gráficos 3D en R

En este tutorial vemos como hacer GRÁFICOS en 3 DIMENSIONES (3D) en R studio. Este tipo de gráficos son útiles cuando queremos ver la relación existente entre 3 variables. Por ejemplo cuando estamos desarrollando un Modelo de Regresión Múltiple. Aquí hago una introducción teórica y luego os presento algunas funciones que podéis usar en R para realizar estos gráficos. Más abajo tienes el código R del vídeo para copiarlo


CÓDIGO R DEL VÍDEO


#DIAGRAMA DE DISPERSIÓN 1

#EJEMPLO


install.packages("scatterplot3d")
library(scatterplot3d)

#set.seed(2)

# EJEMPLO 1

VENTAS <- c(10,6,5,12,10,15,5,12,17,20) # Y

PRECIO <- c(1.30,2,1.7,1.5,1.6,1.2,1.6,1.4,1,1.10) #X

PUBLICIDAD <- c(9,7,5,14,15,12,6,10,15,21) #x2 O Z



x <- PRECIO
y <- VENTAS
z <- PUBLICIDAD


plot(VENTAS,type="l")
plot(PRECIO,type="l")
plot(PUBLICIDAD,type="l")



modelo <-lm(VENTAS ~ PRECIO + PUBLICIDAD)
summary(modelo)

tabla_datos <- cbind(VENTAS,PRECIO,PUBLICIDAD)

scatterplot3d(x, y, z, pch = 19, color = "blue")

scatterplot3d(y, x, z, pch = 19, color = "red")

scatterplot3d(x, z, y, pch = 19, color = "blue")



install.packages("rgl")
library(rgl)
install.packages("shiny")
library(shiny)

plot3d(x, y, z,      # Datos
       type = "s",   # Tipo de gráfico
       radius = 0.1, # Radio de las observaciones
       col = "lightblue",   # Color de las observaciones
       xlab ="X axis lab",  # Etiqueta del eje X
       ylab = "Y axis lab", # Etiqueta del eje Y
       zlab = "Z axis lab") # Etiqueta del eje Z


### ejemplo 2

ejemplo_2<- data.frame(PRECIO,VENTAS,PUBLICIDAD)

colnames(ejemplo_2) <- c('precio', 'ventas', 'publicidad')
head(ejemplo_2)

library(scatterplot3d)
attach(ejemplo_2)




d3_g<- scatterplot3d(x=precio, y=ventas, z=publicidad, pch=16, cex.lab=1,
              highlight.3d=TRUE, type="h", xlab='Precio',
              ylab='Ventas', zlab='Publicidad')


# AJUSTAMOS EL PALNO DE REGRESIÓN

d3_g$plane3d(modelo, lty.box="solid", col='mediumblue')

# DIAGRAMA INTERACTIVO

install.packages("plotly")
library(plotly)

plot_ly(x=precio, y=ventas, z=publicidad,type="scatter3d",color=precio) %>% 
  layout(scene = list(xaxis = list(title = 'PRECIO'),
                      yaxis = list(title = 'VENTAS'),
                      zaxis = list(title = 'PUBLICIDAD')))



# EJEMPLO MERCADO FOREX 

install.packages("quantmod")
library(quantmod)
install.packages("tseries")
library(tseries)
#install.packages("fImport")
library(fImport)


getSymbols("EURUSD=X",quote="Close",from ="2022-01-01",periodicity = "daily")
getSymbols("GBPUSD=X",quote="Close",from ="2022-01-01",periodicity = "daily")
getSymbols("EURGBP=X",quote="Close",from ="2022-01-01",periodicity = "daily")
getSymbols("USDNOK=X",quote="Close",from ="2022-01-01",periodicity = "daily")
getSymbols("USDSEK=X",quote="Close",from ="2012-01-01",periodicity = "daily")

eurusd<- `EURUSD=X`[,4]
gbpusd<- `GBPUSD=X`[,4]
eurgbp<- `EURGBP=X`[,4]
usdnok<- `USDNOK=X`[,4]

EURUSD <- as.numeric(eurusd$`EURUSD=X.Close`)
GBPUSD<-  as.numeric(gbpusd$`GBPUSD=X.Close`)
EURGBP<- as.numeric(eurgbp$`EURGBP=X.Close`)

tabla_forex <- data.frame(EURUSD,EURGBP,GBPUSD)

#colnames(tabla_forex) <- c("", "eurgbp","gbpusd" )

scatterplot3d(EURUSD,EURGBP,GBPUSD, pch = 19, color = "blue")
scatterplot3d(EURUSD,GBPUSD,EURGBP, pch = 19, color = "red")



attach(tabla_forex)


d3_FOREX<- scatterplot3d(x=EURUSD, y=EURGBP, z=GBPUSD, pch=16, cex.lab=1,
                     highlight.3d=TRUE, type="h", xlab='eurusd',
                     ylab='eurgbp', zlab='gbpusd')

#modelo regresion

mod_forex <- lm(EURGBP ~ EURUSD + GBPUSD)
summary(mod_forex)



plot_ly(x=EURUSD, y=EURGBP, z=GBPUSD,type="scatter3d",color=EURGBP) %>% 
  layout(scene = list(xaxis = list(title = 'EURUSD'),
                      yaxis = list(title = 'EURGBP'),
                      zaxis = list(title = 'GBPUSD')))



plot3d(EURUSD, EURGBP,GBPUSD,      # Datos
       type = "p",   # Tipo de gráfico
       radius = 0.5, # Radio de las observaciones
       col = "red",   # Color de las observaciones
       xlab ="EURUSD",  # Etiqueta del eje X
       ylab = "EURGBP", # Etiqueta del eje Y
       zlab = "GBPUSD") # Etiqueta del eje Z

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio