代码之家  ›  专栏  ›  技术社区  ›  Simeon Y.

Plotly正在R中混合调色板颜色

  •  1
  • Simeon Y.  · 技术社区  · 8 年前

    当我试图定义自定义调色板时,比如说蓝色和红色,我得到的是洋红色而不是蓝色。让我们来看一个来自 情节

    library(plotly)
    pal <- c("red", "blue", "green")
    p <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, 
          color = ~Species, colors = pal)
    p
    

    这正如预期的那样有效。三个物种中的每一个都有自己的颜色:红色、蓝色或绿色。

    然后,我准备一个新的数据集,删除“virginica”,并绘制结果:

    library(dplyr)
    pal <- c("red", "blue", "green")
    iris_new<- filter(iris, Species == "setosa" | Species == "versicolor")
    p <- plot_ly(data = iris_new, x = ~Sepal.Length, y = ~Petal.Length, 
          color = ~Species, colors = pal)
    p
    

    现在“setosa”是红色,“versicolor”是蓝色。我们不使用绿色,因此删除它似乎是合理的:

    pal <- c("red", "blue")
    iris_new<- filter(iris, Species == "setosa" | Species == "versicolor")
    p <- plot_ly(data = iris_new, x = ~Sepal.Length, y = ~Petal.Length, 
          color = ~Species, colors = pal)
    p
    

    它不是 :蓝色被洋红色取代,这很奇怪。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Marius    8 年前

    我认为这可能只是因为你有一个2调色板映射到一个3级因子-直到你把未使用的级别从 Species 变量并将影响其打印方式。

    iris_new<- filter(iris, Species == "setosa" | Species == "versicolor") %>%
        mutate(Species = droplevels(Species))
    p <- plot_ly(data = iris_new, x = ~Sepal.Length, y = ~Petal.Length, 
                 color = ~Species, colors = pal)
    p