Question

I am using rgl to create a scatterplot of points from an imported .csv dataset. The colors that I'd like the points to be is set in the dataset. Everything works fine, except that when the scatterplot is displayed the colors of the points do not match the colors defined in the data. E.g., all the points that are designated as "blue" might actually be green, and all the points designated as "yellow" might actually show up red.

data=read.csv("ExpLayout.csv", header = TRUE)
x=data$x
y=data$y
z=data$z
color=data$color
plot3d(x=x, y=y, z=z, type="s", col=color)
Was it helpful?

Solution

This is almost certainly due to read.csv converting strings to factors

See the difference in this reproducible example

library(rgl)
x<-1:5
y=1:5
z <- 1:5
colors <- c('red','green','blue','orange','purple')
plot3d(x=x,y=y,z=z,col=colors, type = 's')
colorsf <- factor(c('red','green','blue','orange','purple'))
plot3d(x=x,y=y,z=z,col=colorsf, type = 's')

So, either read in color as a character column using stringsAsFactors=FALSE or coerce to character using as.character() or levels(colors)[colors]

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top