I have created the following 3d scatter plot using plotly in R. For this I used the following code The data setTxy, just contains the x,y,z coordinates of each marker and a value between 0-1.5 for each coordinate point (in a column with name vectorM)
figfactor<- plot_ly(setTxy, x=~xplot,y=~yplot*-1,z=(~zplot*-1),
type="scatter3d",mode="markers",
marker=list(color=~vectorM,
colorscale=c("rgb(244, 244, 244)","rgb(65, 65, 65)"),
showscale=TRUE,
line=list(width=2,color='DarkSlateGrey')))
figfactor <- figfactor %>% add_markers()
figfactor <- figfactor %>% layout(scene = list(xaxis = list(title = 'x-value [mm]'),
yaxis = list(title = 'y-value [mm]'),
zaxis = list(title = 'z-value [mm]')),
annotations = list(
x = 1.06,
y = 1.03,
text = 'factor',
xref = 'paper',
yref = 'paper',
showarrow = FALSE
))
figfactor

I thought I changed all colors to grey , but there is still collor in the plot. How can I change this? Further: -why is the scaling not in grey; and how can I create this? -how can I outline "factor"above the scale on the right -why do I have 'trace 0'and 'trace 1'?
How can I draw two circles in this graph, either by drawing into the graph or by using the formula of a circle?
Thanks
From the documentation scatter-marker-color the problem is that the colours are given in the wrong format. Note the part marked in bold below
Sets the colorscale. Has an effect only if in
marker.line.coloris set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example,[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]. To control the bounds of the colorscale in color space, usemarker.line.cminandmarker.line.cmax. Alternatively,colorscalemay be a palette name string of the following list:
- Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis, Cividis.
In R an array is either created using array or as a list of lists (or list of vectors). As such we can obtain the fully gray colouring in two ways:
colourscale = 'Greys'Using the mtcars data as an example this could be done as
data(mtcars)
library(plotly)
plot_ly(mtcars, x = ~hp, y = ~cyl, z = ~mpg,
type = 'scatter3d', mode = 'markers',
marker = list(color = ~ hp,
# Use either a named palette in the above list:
#colorscale = 'Greys',
# Or use a list of vector scales.
colorscale = list(c(0, rgb(55, 55, 55, max = 255)),
c(1, rgb(244, 244, 244, max = 255))),
showscale = TRUE))
Note that the line argument is unnecessary unless you want specifically to add lines between points, and that the order of your list does matter (eg. c(1, ...) should always come after c(0, ...)).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With