2016-08-03 6 views
0

plotlyプロットの色をカスタマイズしたいと思います。これは、連続変数のために正常に動作してごとにスケールdocsプロットしたカスタム個別色スケール

> plot_ly(iris, x = Petal.Length, y = Petal.Width, 
      color = Sepal.Length>6, colors = c("#132B43", "#56B1F7"), 
      mode = "markers") 


Warning message: 
In RColorBrewer::brewer.pal(N, "Set2") : 
    minimal value for n is 3, returning requested palette with 3 different levels 
:私は、引数が離散(文字または因子)を着色する作る場合は、しかし、これはまだ動作しますが、警告をスロー

library(plotly) 

plot_ly(iris, x = Petal.Length, y = Petal.Width, 
      color = Sepal.Length, colors = c("#132B43", "#56B1F7"), 
      mode = "markers") 

これを正しく行うにはどうすればよいですか?

答えて

4

これはばかげた問題ではなく、ColorBrewer(および対応するRColorBrewerパッケージ)の設計機能です。 colorを3つ以上のレベルの要因に割り当てると警告が表示されなくなります。

plot_ly(iris, x = Petal.Length, y = Petal.Width, 
     color = cut(Sepal.Length, 3), colors = "Set1", 
     mode = "markers") 

データクラスのColorBrewerの最小数は、(あなたは三つのクラスよりも少ないを選択することはできませんhttp://colorbrewer2.org/から見ることができます)3であるためです。例えば、?brewer.pal(plotlyによって参照される機能)には、具体的に言う

すべてシーケンシャルパレットは9つの異なる値に最大3つの 異なる値からの変化に入手可能です。定性パレットの

[...]

は、利用可能な異なる値の最小数は常に3

plotly()コール内部機能)常にbrewer.pal()を呼び出しbuild_plotly()ので(ライン474 here参照あります)関数を書き換えずに、brewer.pal()を3つ未満のデータクラスで呼び出さないでこれを修正することはできません。 、警告をオフにしたオブジェクトにプロット出力を割り当て、このようなsuppressWarnings()print(object)文をラップする一方

、:

plotly_plot <- plot_ly(iris, x = Petal.Length, y = Petal.Width, 
     color = Sepal.Length>6, colors = c("#132B43", "#56B1F7"), 
     mode = "markers") 

suppressWarnings(print(plotly_plot)) 
+0

は理にかなっています。これに関するバグレポートを提出しました:https://github.com/ropensci/plotly/issues/670 – RoyalTS

+0

これまでの間、この警告を取り除くことはできますか?私はそれを抑制しようとしましたが、それがまだ示すようにそれを間違った場所で抑制しているようです。私はまた、未使用の第3レベルを因子に加えることを試みました。しかし、それも機能していないようです。 – RoyalTS

+0

私はそれに応じて私の答えを更新しました – Felix

関連する問題