У вас есть цвета, определенные в вашем исходном фрейме данных, поэтому есть две потенциальные опции, которые кажутся близкими к желаемому решению.
I () используется, чтобы указать, что переменная - это тождество (ie Используйте это значение как есть и не интерпретировать как фактор)
library(plotly)
df <- structure(list(team = c("Dolphins", "Sharks", "Minnows", "Sharks"
), V1 = 1:4, V2 = 4:1, color_id = c("dodgerblue", "red", "black",
"red")), row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"
))
colors <- lookup$color_id
#original
plot_ly(df, x= ~ V1, y= ~ V2, color = ~ color_id, name = ~ team, colors = colors) #wrong order, 1 different color
Здесь вы хотите раскрасить переменную команду, используя "colors", чтобы указать палитру.
#this works but color palette needs to the same order as the teams
plot_ly(df, x= ~ V1, y= ~ V2, color = ~team, name = ~ team, size=I(70),
colors = c("dodgerblue", "black", "red") )
Поскольку вы все готовы иметь вектор желаемой палитры в вашем фрейме данных второй вариант, чтобы указать опцию цвета напрямую.
#If we manually specify the desired colors by directly referencing the data frame it works:
plot_ly(df, x= ~ V1, y= ~ V2, color = ~I(color_id), name = ~ team, size=I(50))