R сюжетно: невозможно изменить градиент цвета - PullRequest
1 голос
/ 24 апреля 2020

Я использовал plotly для визуализации трехмерной диаграммы рассеяния в блестящем приложении с цветным градиентом. Несмотря на то, что сама диаграмма рассеяния basi c сама по себе не является проблемой, я не могу изменить цвета градиента цвета, даже для приведенного здесь примера: https://plotly.com/r/3d-scatter-plots/. (см. фрагмент кода).

Я пробовал несколько комбинаций цветов со стандартными цветами и гексакодом.

library(plotly)

fig <- plot_ly(mtcars, x = ~wt, y = ~hp, z = ~qsec,
               marker = list(color = ~mpg, colorscale = c('#FFE1A1', '#683531'), showscale = TRUE))
fig <- fig %>% add_markers()
fig <- fig %>% layout(scene = list(xaxis = list(title = 'Weight'),
                                   yaxis = list(title = 'Gross horsepower'),
                                   zaxis = list(title = '1/4 mile time')),
                      annotations = list(
                        x = 1.13,
                        y = 1.05,
                        text = 'Miles/(US) gallon',
                        xref = 'paper',
                        yref = 'paper',
                        showarrow = FALSE
                        ))
fig


Любая помощь очень ценится. Приветствия

1 Ответ

1 голос
/ 24 апреля 2020

Похоже, что страница документации, которую вы цитировали выше, устарела. Это пример заговора наличия причуд.

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

Чтобы перевести это в пригодный для использования R, посмотрите этот вопрос: R, Как изменить цвет сюжетной трехмерной поверхности?

Таким образом, для вашей проблемы выше здесь возможное решение:

plot_ly(mtcars, x = ~wt, y = ~hp, z = ~qsec, 
        marker = list(color = ~mpg, colorscale = list(c(0, 1), c("yellow", "blue")), showscale = TRUE))

Другим вариантом является использование предопределенных палитр из ColorBrewer и других с этой строкой:

plot_ly(mtcars, x = ~wt, y = ~hp, z = ~qsec, 
        marker = list(color = ~mpg, colorscale = "Greens", showscale = TRUE))

Доступны следующие варианты: Серые, YlGnBu, Зеленые, YlOrRd, Bluered, RdBu , Красные, Блюз, Пикни c, Радуга, Портленд, Джет, Горячий, Черное тело, Земля, Электри c, Виридис, Сивидис.

...