0

I am trying to create a 3D scatter plot. I don't know the etiquette behind changing code as it's edited... so have just replaced with latest version. I'm now getting a 3D plot - not sure how to change the colour scheme of the dots to match "N" value but working on it...

Two 3d graphic visualisations of RA / RWR and C40 #VERSION 1 – pretty but I’m not sure what the colours are yet! Still needs work

if(!require('tidyverse')) {
  install.packages('tidyverse')
  library('tidyverse')
}
library(readxl)

if(!require('tidyverse')) {
  install.packages('tidyverse')
  library('tidyverse')
}
library(readxl)
library(dplyr)
library(ggplot2)

# Install and load the plot3D package
if(!require('plot3D')) {
  install.packages('plot3D')
  library('plot3D')
}

# Example data frame
tdp <- data.frame(
  sample=c(1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801),
  RA=c(31.25,7.142857143,20,22.22222222,0,16.66666667,33.33333333,45,22.22222222,12,9.090909091,33.33333333,29.41176471,36.36363636,50,25,21.42857143,0,22.5,18.18181818,0,8.333333333,38.88888889,26.31578947,40,16,37.5,17.64705882,10,40,0,0),
  C40=c(12.5,7.142857143,30,11.11111111,30,16.66666667,0,5,33.33333333,32,18.18181818,16.66666667,17.64705882,18.18181818,5.555555556,0,14.28571429,20,10,4.545454545,0,33.33333333,22.22222222,21.05263158,13.33333333,8,25,29.41176471,15,13.33333333,0,0),
  N=c(16,14,10,9,10,6,15,20,9,25,11,12,17,11,18,8,14,20,40,22,3,12,18,19,15,25,8,17,20,15,3,2),
  RWR=c(18.75,7.142857143,0,22.22222222,10,33.33333333,20,15,44.44444444,44,18.18181818,0,17.64705882,18.18181818,16.66666667,25,14.28571429,25,20,18.18181818,0,33.33333333,11.11111111,21.05263158,40,24,25,23.52941176,30,20,0,0)
)

# Display the first few rows of the data frame
head(tdp)

# Create a 3D scatter plot
scatter3D(x = tdp$RA, y = tdp$RWR, z = tdp$C40, colour = "black", 
      pch = 16, cex = 1.5, xlab = "RA", ylab = "RWR", 
      zlab = "C40", 
      main = "title", ticktype = "detailed", 
      type = "h", theta = 10, d = 2, 
      colkey = list(length = 0.5, width = 0.5, cex.clab = 0.75))

#VERSION 2 – interactive 3D model


if(!require('tidyverse')) {
  install.packages('tidyverse')
  library('tidyverse')
}
library(readxl)

if(!require('tidyverse')) {
  install.packages('tidyverse')
  library('tidyverse')
}
library(readxl)
library(dplyr)
library(ggplot2)

# Install and load the plot3D package
if(!require('plot3D')) {
  install.packages('plot3D')
  library('plot3D')
}

# Example data frame
tdp <- data.frame(
  sample=c(1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801),
  RA=c(31.25,7.142857143,20,22.22222222,0,16.66666667,33.33333333,45,22.22222222,12,9.090909091,33.33333333,29.41176471,36.36363636,50,25,21.42857143,0,22.5,18.18181818,0,8.333333333,38.88888889,26.31578947,40,16,37.5,17.64705882,10,40,0,0),
  C40=c(12.5,7.142857143,30,11.11111111,30,16.66666667,0,5,33.33333333,32,18.18181818,16.66666667,17.64705882,18.18181818,5.555555556,0,14.28571429,20,10,4.545454545,0,33.33333333,22.22222222,21.05263158,13.33333333,8,25,29.41176471,15,13.33333333,0,0),
  N=c(16,14,10,9,10,6,15,20,9,25,11,12,17,11,18,8,14,20,40,22,3,12,18,19,15,25,8,17,20,15,3,2),
  RWR=c(18.75,7.142857143,0,22.22222222,10,33.33333333,20,15,44.44444444,44,18.18181818,0,17.64705882,18.18181818,16.66666667,25,14.28571429,25,20,18.18181818,0,33.33333333,11.11111111,21.05263158,40,24,25,23.52941176,30,20,0,0)
)

# Display the first few rows of the data frame
head(tdp)
# Create a 3D scatter plot with sample numbers as labels
scatter3D(x = tdp$RA, y = tdp$RWR, z = tdp$C40, 
          pch = 19, cex = 0.5, col = "blue",
          xlab = "RA", ylab = "RWR", zlab = "C40")

# Add sample numbers as text labels
text3D(x = tdp$RA, y = tdp$RWR, z = tdp$C40, 
       labels = tdp$sample, add = TRUE, 
       cex = 0.6, col = "red")

I'm still trying to wrangle this with your help - which is much appreciated :)

5
  • 1
    Your mutate() line of code is missing a ), it may lead to your error. Also, the scatter3D() function doesn't exist in any of the packages you're calling, so you will get an error for an unknown function. Are you looking to use the function from the car package? If so, add library(car) at the top of your script. Commented May 30, 2024 at 3:45
  • H @Phil and THANK YOU for your hints... I have no idea if I am using a function from 'car' {i hope that formatting is correct} I'll look into it! :D Commented May 30, 2024 at 11:59
  • Since actioning some of the changes @Phil suggested I have some "exciting" new messages... "package ‘plot3D’ was built under R version 4.2.3 " - does this mean it won't run? and "Error in splitdotpersp(list(...), bty, NULL, x, y, z, plist = plist, breaks = breaks) : object 'RA' not found" Commented May 30, 2024 at 12:14
  • 1
    It means that your version of R is very old and needs to be updated. Commented May 31, 2024 at 2:18
  • R - updated as suggested - thank you Commented Jun 3, 2024 at 9:34

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.