Как я могу явно назначить уникальные цвета каждой точке на графике рассеяния R Plotly? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть такие данные:

data <- data.frame(x=runif(500), y=runif(500), z=runif(500))

Мне нужна диаграмма рассеяния с точками, независимо / дискретно окрашенными в каждом измерении (X, Y и Z) с использованием значений RGB.

Вот что я пробовал:

Код:

library(dplyr)
library(plotly)

xyz_colors <- rgb(data$x, data$y, data$z)

plot_ly(data = data, 
    x = ~x, y = ~y, z = ~z, 
    color= xyz_colors, 
    type = 'scatter3d', 
    mode='markers') %>%
  layout(scene = list(xaxis = list(title = 'X'),
                      yaxis = list(title = 'Y'),
                      zaxis = list(title = 'Z')))

Сюжет:

enter image description here

RColorBrewer считает, что я пытаюсь создать непрерывную шкалу из 500 промежуточных цветов:

Warning messages:
1: In RColorBrewer::brewer.pal(N, "Set2") :
  n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors

2: In RColorBrewer::brewer.pal(N, "Set2") :
  n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors

Какими правильными способами закрасить такие точки в R с помощью Plotly? Кроме того, как вообще можно назначить цвета точкам данных в R с помощью Plotly, индивидуально?

Чтобы уточнить, я пытаюсь раскрасить каждую точку, где цвет имеет формат "#XXYYZZ", где "XX" aзначение между 00 и FF линейно отображается на значение данных $ x от 0 до 1. То есть измерение X определяет количество красного, измерение Y определяет количество зеленого, а измерение Z определяет количество синего. При 0,0,0 точка должна быть черной, а при 1,1,1 точка должна быть белой. Причина этого заключается в том, чтобы максимально упростить визуализацию трехмерного положения точек.

1 Ответ

0 голосов
/ 30 октября 2019

На трехмерных графиках вы можете использовать один и тот же цвет для всех точек, различать разные кластеры или категории друг от друга, используя разные цвета, или использовать отдельные цвета для каждой точки, чтобы проиллюстрировать четвертое значение (или четвертое измерение, если хотите). , как описано здесь ) в вашем наборе данных. Все эти подходы, как вы говорите, являются примерами '[...] correct ways to color the points [...]'. Посмотрите ниже и посмотрите, подходит ли вам это. Я включил fourthVal <- data$x+data$y+data$z в качестве примера для дополнительного измерения. То, что вы в конечном итоге будете использовать, будет полностью зависеть от вашего набора данных и того, что вы хотели бы проиллюстрировать.

Код:

library(dplyr)
library(plotly)

data <- data.frame(x=runif(500), y=runif(500), z=runif(500))

xyz_colors <- rgb(data$x, data$y, data$z)

fourthVal <- data$x+data$y+data$z

plot_ly(data = data, 
        x = ~x, y = ~y, z = ~z, 
        color= fourthVal, 
        type = 'scatter3d', 
        mode='markers') %>%
  layout(scene = list(xaxis = list(title = 'X'),
                      yaxis = list(title = 'Y'),
                      zaxis = list(title = 'Z')))

Сюжет:

enter image description here

...