2017-09-04 7 views
3

は、私は次のように使用して散布図を構築しています、のは言ってみましょう:ggplot2では、値から色を取得する方法は?

library(tidyverse) 
data_frame(x = rnorm(500), y = rnorm(500), val = rnorm(500)) %>% 
    ggplot(aes(x, y, colour = val)) + 
    geom_point() + 
    scale_colour_gradient2(low = "red", high = "blue", mid = "yellow") 

(既存の値の範囲内の)任意の値に関連付けられた16進数のカラーコードを取得する方法はありますか?言い換えれば、#ffff00(黄色)を0から得る方法、または0.2の色はどうですか?

答えて

7

私は安定または信頼性(あるいは正しい)これはどのようには考えてきませんが、スケールのオブジェクトの根性に飛び込むにはいくつかのことを明らかに:

規模なオブジェクトを作成します
> scg = scale_colour_gradient2(low = "red", high = "blue", mid = "yellow") 

。さまざまなメソッドを呼び出すことができます。デフォルトでは、-1から1まで(または多分0〜1)値をスケーリングするので、あなたのデータにリセットする必要があります。

> scg$train(d$val) 

次に、あなたが行うことができます:このスケールは

> scg$map(0.2) 
[1] "#FAF03B" 

注意ゼロを中心としたので、赤ではなく分より-maxある-max <分理由:

> scg$map(c(-max(d$val),min(d$val),0,max(d$val))) 
[1] "#FF0000" "#FF4600" "#FFFF00" "#0000FF" 

んグラフ上の色と一致しますか?

関連する問題