2013-11-21 10 views
5

y軸値の関数として色でbarplot:ggplot2:私は(データ+ barplot)この単純なコードを有する

# Palette 
LtoM <-colorRampPalette(c('red', 'yellow')) 
Mid <- "snow3" 
MtoH <-colorRampPalette(c('lightgreen', 'darkgreen')) 
:私は次のパレットを使用してヒートマップを作成して他の場所
dat <- c('Jan','Feb','Mar', 'Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') 
val <- c(-2.5, 3, 2.5, -3.3, -1, 0.2, 6, 4.3, 5.5, 2, -1.9, -2.3) 
df <- data.frame(dat, val) 
bar <- ggplot(data = df, aes(x = factor(dat, levels = month.abb), y = val)) + 
    geom_bar(stat = 'identity') 
print(bar) 

呼び出され

scale_fill_gradient2(low = LtoM(100), mid = Mid, high = MtoH(100)) 

は今、私はそれは私が協力したいです、私のbarplotについて同様のカラーパレットを使用したいです各バーには、高さの関数である(最大yの場合、最小から最小の赤からいくつかの等級)。

どうすればいいですか?

答えて

3

基本的には、現在のコードがあります。 scale_fill_gradient関数を追加するだけです。

bar <- ggplot(data = df, aes(x = factor(dat, levels = month.abb), y = val, 
       fill=val)) + 
     geom_bar(stat = 'identity') + 
     scale_fill_gradient2(low=LtoM(100), mid='snow3', 
     high=MtoH(100), space='Lab') 

custom colors

しかし、scale_fill_gradient2グラデーション-INGの世話をすることができますすることはかなりよくlilsterを返信するための

bar <- ggplot(data = df, aes(x = factor(dat, levels = month.abb), y = val, 
       fill=val)) + 
     geom_bar(stat = 'identity') + 
     scale_fill_gradient2(low='red', mid='snow3', high='darkgreen', space='Lab') 

generated colors

+0

おかげで動作します。実際に私は最初のグラフを取得する方法を知っていたが、正確には私が何をしていない。私は、val = 2のとき、すべての棒がval = 5(そしてその間の色の目盛り)のとき、 '赤'と '緑'になりたいと思っています。それが表す値に応じて各棒が(均一に)着色されているのとは異なります。今私は少し明確になってほしい – tagoma

+0

私はここで詳細が必要だと思う。 'val = -2のときは、すべてのバーが「赤」で、緑色のときはval = 5(とその中間の色の尺度)です。 <私が投稿したグラフはどちらもこれを満足するようです。 'は、それが表す値によって、各バーが(均一に)色付けされているのとは異なります。 < - それは違うが、私の答えではどちらの色も一様に色づけされていない。 スケールの塗りつぶしグラデーションは最小値を「reddest」に設定し、最大値を「greenest」に設定し、その間にカラースケールを設定します。 これはあなたが探しているものとどう違うのか、おそらく画像ファイルの添付ファイルで記述することができます – lilster

+0

こんにちはlilsterおかげさまでありがとうございます:)私はこのような 'このような'プロットを描きたいと思います。http://www.quinn-curtis .com/QCChar96.jpgどんなy値でも、すべての棒は同じ色で、色はy値の関数です。 – tagoma

関連する問題