изменение цвета в plotly scatter3D - PullRequest
       51

изменение цвета в plotly scatter3D

1 голос
/ 04 августа 2020
• 1000 (в столбце с именем 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

3D-диаграмма рассеяния

Я думал, что поменял все цвета на серый, но в сюжете все еще есть колор. Как я могу это изменить? Далее: -почему масштабирование не серым цветом; и как я могу это создать? -как я могу очертить «фактор» над шкалой справа -почему у меня есть «след 0» и «след 1»?

Как я могу нарисовать два круга на этом графике, либо путем рисования в график или используя формулу круга?

Спасибо

1 Ответ

0 голосов
/ 26 августа 2020

Из документации scatter-marker-color проблема в том, что цвета указаны в неправильном формате. Обратите внимание на часть, выделенную жирным шрифтом ниже

Устанавливает шкалу цветов. Имеет эффект, только если в marker.line.color установлен числовой массив. Цветовая шкала должна быть массивом, содержащим массивы , отображающие нормализованное значение в rgb, rgba, шестнадцатеричную, hsl, hsv или именованную цветовую строку. Как минимум, требуется сопоставление наименьшего (0) и наибольшего (1) значений. Например, [[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]. Чтобы контролировать границы шкалы цветов в цветовом пространстве, используйте marker.line.cmin и marker.line.cmax. В качестве альтернативы, colorscale может быть строкой названия палитры из следующего списка:

  • Grays, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picni c, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electri c, Viridis, Cividis.

В R массив создается с использованием array или list списков (или список векторов). Таким образом, мы можем получить полностью серую окраску двумя способами:

  1. Установка colourscale = 'Greys'
  2. Переназначение вашего вектора в список векторов.

Используя данные mtcars в качестве примера, это можно сделать как

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))

Обратите внимание, что аргумент line не нужен, если вы не хотите специально добавлять строки между точками, и что порядок из вашего списка имеет значение (например, c(1, ...) всегда должно стоять после c(0, ...)).

...