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:
layer1: surface
layer2: surface
layer:3 scatter
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?