Edit: Answer from SO https://stackoverflow.com/a/51503530/10071318
I created a detailed version of this question over at Stackoverflow, so here is the short version:
I’m trying to create a 3D scatter with two regression planes, but no matter what I try I can’t manage to have the scatter in the correct color AND have a legend for it at the same time.
Reproducible code here.
Currently my setting is:
plot_ly(x=~x1.seq, y=~x2.seq, z=~z, colorscale = list(c(0,1),c("rgb(253, 231, 37)","rgb(253, 231, 37)")), type="surface", opacity=0.35, showlegend=F, showscale = FALSE) %>% add_trace(inherit=F, data=.df, x=~z, y=~y, z=~x, color=~treat, colors=cols1, mode="markers", type="scatter3d", marker = list(opacity=0.6, symbol=105, size=7)) %>% add_trace(inherit=F, x=~x1.seq, y=~x2.seq, z=~z2, colorscale = list(c(0,1),c("rgb(40, 125, 142)","rgb(40, 125, 142)")), type="surface", opacity=0.35, showlegend=F, showscale = FALSE) %>% layout(legend = list(x = 0.1, y = 0.9), scene = list( aspectmode = "manual", aspectratio = list(x=1, y=1, z=1), xaxis = list(title = "Litter size", range = c(2,7)), yaxis = list(title = "Day", range = c(0,20)), zaxis = list(title = "Weight", range = c(0.5,15))))`
If I try to set like this, the colors are completely ignored and set to some default. I managed to get the correct colors by applying the correct value to each point in my data frame, but then I get no legend (see reproducible code).
If I change the order to surface - scatter - surface I get different default colors.
Does anybody has an idea what else I could try?