在R中详细定义调色板的颜色顺序

时间:2022-11-26 14:57:54

I am trying to create a number of Plotly plots using a function. I have created a color palette for them. The datasets I am using have different numbers of grouping factors and I want them to use the colors in the order I specify, but it seems to choose a different order depending on how many factors there are. Is there an easy way to fix this? Do I need to create a function? Thank you!

我正在尝试使用一个函数来创建大量的情节图。我为他们创建了一个调色板。我所使用的数据集有不同数量的分组因素,我希望它们按照我指定的顺序使用颜色,但根据有多少因素,它似乎选择了不同的顺序。有简单的方法来解决这个问题吗?我需要创建一个函数吗?谢谢你!

A visual example of the problem 在R中详细定义调色板的颜色顺序

这个问题的一个直观的例子

library(plotly)
#Some example data
x <- 1:10
g <- c("A", "B", "C", "D", "E")
g2 <- c("A", "B")
g3 <- c("A", "B", "C")
y <- 1:20
df <- as.data.frame(cbind(x,g,y))
df2 <- as.data.frame(cbind(x,g2,y))
df3 <- as.data.frame(cbind(x,g3,y))

#Color palette
pal <- c('blue','yellow','green', 'pink', 'black')

#In this plot the order is as in the pal object, this is what I want.
plot1 <- plot_ly(data=df, x=~x, y=~y,
                 type = "bar", color=~g, colors =pal)
plot1

#In this plot uses the first and the fifth in the pal object
# and I would like to be the first and second colors.
plot2 <- plot_ly(data=df2, x=~x, y=~y,
                 type = "bar", color=~g2, colors =pal)
plot2

#In this one uses the first, the third and the fifth in that order
# and I would like to be the first, second and third colors.
plot3 <- plot_ly(data=df3, x=~x, y=~y,
                 type = "bar", color=~g3, colors =pal)
plot3

1 个解决方案

#1


2  

One option is to use colors = pal[1:length(g2)] (for the second case):

一种选择是使用颜色= pal[1:length(g2)](对于第二种情况):

在R中详细定义调色板的颜色顺序

Or you could match the color with the factor levels.

或者你可以把颜色和因子水平匹配。

#1


2  

One option is to use colors = pal[1:length(g2)] (for the second case):

一种选择是使用颜色= pal[1:length(g2)](对于第二种情况):

在R中详细定义调色板的颜色顺序

Or you could match the color with the factor levels.

或者你可以把颜色和因子水平匹配。