2017-09-01 17 views
1

青と赤の色のようなカスタムパレットを定義しようとすると、青の代わりにマゼンタが表示されます。Plotlyがパレットの色を混ぜるR

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

予想通り、この作品:のは、plotly文書から取った例を考えてみましょう。赤、青、緑の3種類があります。

それから私は「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 

結果は、明らかに、コードの前のチャンクのように、同じでなければなりませんが、実際で、それはではありません。青色はマゼンタに置き換えられ、それは非常に奇妙です。

答えて

2

これはおそらく、3つのレベル係数にマップされた2つのカラーパレットを持っているからだと思います。Speciesの係数から未使用のレベルを削除するまでは、まだ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 
+0

それは動作します:因子レベルを落とす

は色があなたが期待どおりに動作します!どうもありがとうございます!私はあなたが正しいと思う:それは3つのレベルの要素にこの2つの色を引き伸ばそうとしている。 –

+0

面白い! 1つの因子レベルしかないときも同じことが起こりますか? – patrick

関連する問題