2017-01-27 6 views
3

ggvisパッケージを使用すると、R's named colorsに問題が発生しました。たとえば、ggvis fillプロパティを "cadetblue"に設定した場合は動作しますが、 "cadetblue1"に設定してもそれは動作しません。Rとggvisの名前付きカラー

library(ggvis) 
pressure %>% ggvis(~temperature, ~pressure, fill := "cadetblue") %>% layer_bars() 

fillプロパティを "cadetblue1"に変更すると、プロットが黒くなります。 ggvisを使用している場合は、名前に数字のない大きな名前の色しか表示されないようです。なぜ誰かが知っていますか、私はここで何か誤解していますか?

答えて

2

なぜそれが起こっているのか分かりませんが、名前から16進数に変換して名前付きの色を使用できます。

  • col2rgbは、色名を8ビットの数値rgb値(10進数で表示)に変換します。
  • rgbは、t(転置)を使用して列ベクトルから行ベクトルへの変換後にcol2rgbの出力を取り、対応する16進カラーコードに変換します。

だから、あなたのケースでは、コードは次のようになります。

fill := rgb(t(col2rgb("cadetblue1")), maxColorValue=255) 

または、個々のステップを参照するには:

x = t(col2rgb("cadetblue1")) 
 red green blue 
[1,] 152 245 255 
rgb(x, maxColorValue=255) 
[1] "#98F5FF" 
+0

有益な答えをありがとう!ちょうど1つの注記:あなたのコードを実行すると、RStudio IDEは私に、 'max'が部分的に一致した引数であると警告します。むしろ、それは 'maxColorValue'でなければなりません。 – jsb

+0

はい、私はちょうど怠け者でした。私は完全な引数名を追加しました。 Rは部分的な引数名でマッチングするので、同じ関数内の別の引数と競合しない限り動作します。 – eipi10

1

色はHTML hex color codeです。例えば、青色の士官候補生のため

pressure %>% ggvis(~temperature, ~pressure, fill := "#FFFF00") %>% layer_bars() 
イエローの

または"#5f9ea0"を試し、そしてRはそれを黒にデフォルトをあなたの色入力が有効なものとして認識していないためように...

プロットが黒くなります。

+0

あなたの答えは本当に私の質問に答えていません、申し訳ありません。 – jsb

+0

正確にあなたの質問は何ですか?あなたはすでに「大きな名前の色のみ」が認識されているので、あなた自身の疑問に答えているようです。あなたは文字列の最後に数字を入れるだけでそれらを増やすことはできません。 –

+0

私の仮説が本当に正しければ、その理由を知りたいと思います。私はまた、この問題の解決法があるかどうかを知りたいと思っていますが、それでも16進ではなく名前付きの色を使用しています。 – jsb

関連する問題