Three Dimensional Scatterplot / Spaghetti Plot

Author

Andy Grogan-Kaylor

Published

October 9, 2024

1 Call Libraries

Code
# library(scatterplot3d)

library(car)

library(rgl)

library(haven)

library(dplyr)

2 Get Data

Code
simulated_multilevel_data <- 
  read_dta("https://github.com/agrogan1/multilevel-thinking/raw/refs/heads/main/simulate-and-analyze-multilevel-data/simulated_multilevel_data.dta")

simulated_multilevel_data <- simulated_multilevel_data %>%
  filter(country < 10)
  
simulated_multilevel_data$country <- factor(simulated_multilevel_data$country)

3 Three Dimensional Scatterplot / Spaghetti Plot

Code
clear3d()

scatter3d(simulated_multilevel_data$outcome ~ 
            simulated_multilevel_data$warmth +
            simulated_multilevel_data$physical_punishment,
          groups = simulated_multilevel_data$country,
          surface.col = 1:30,
          surface = TRUE,
          xlab="Parental Warmth",
          zlab = "Physical Punishment",
          ylab = "Outcome")

text3d(x=0, y=1, z=0, 
       "Three Dimensional Scatterplot / Spaghetti Plot",
       cex = 2.0)

rglwidget()