如何在R中应用颜色查找表

问题描述 投票:2回答:1

对于涉及运动队的数据,我想为我生成的任何图表从查找表中应用一致的自定义颜色。这是我目前的工作

library(tidyverse)
library(plotly)

lookup <- tibble(team=c("Dolphins","Sharks","Minnows"), color_id =c("dodgerblue","red","black"))

data <- tibble(team =c("Dolphins","Sharks","Minnows","Sharks"),V1=c(1:4),V2=c(4:1))

df <- data %>% 
    left_join(lookup)


colors <- lookup$color_id

plot_ly(df, x= ~ V1, y= ~ V2, color = ~ color_id, name =  ~ team, colors = colors) 

Output

如您所见,图例无法正确识别颜色。例如,海豚应该是dodgerblue

提前感谢

r colors plotly
1个回答
0
投票

[这似乎是一个古怪,从总体上来说并不像预期的那样。

您已经在初始数据框中定义了颜色,因此有两个可能的选项似乎与所需的解决方案很接近。I()用于指定变量为身份(即,按原样使用此值,并且不解释为因素)

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

这里您想由可变团队使用“颜色”为调色板指定颜色。

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

第二个选项是使用所需调色板的向量直接指定颜色选项。

#This should work, but is not using the desired colors
plot_ly(df, x= ~ V1, y= ~ V2, color = I(~color_id), name =  ~ team, size=I(50))

#If we manually specify the desired colors by directly referencing the data frame it works:
plot_ly(df, x= ~ V1, y= ~ V2, color = I(df$color_id), name =  ~ team, size=I(50))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.