2012-04-10 5 views
8

この質問は、ggplot2の背景色について私のに続きます。ggplotコマンドで2つの異なるscale_fill_manualをアクティブにする方法

ここでの回答から、私は今やgeom_rectを使用して、5つの異なる色を持つ私のプロットの背景を与えることができます。その上に私は2つの異なる色を使用するbarchartをプロットしたいと思います。私はこれらのタスクをそれぞれ別々に行うことができますが、それらを組み合わせようとするとscale_fill_manualコマンドが衝突します。ここで

は私がしようとしているものです:

scores = data.frame(category = 1:4, percentage = c(34,62,41,44), type = c("a","a","a","b")) 
rects <- data.frame(ystart = c(0,25,45,65,85), yend = c(25,45,65,85,100), col = letters[1:5]) 
labels = c("ER", "OP", "PAE", "Overall") 
medals = c("navy","goldenrod4","darkgrey","gold","cadetblue1") 

ggplot() + 
geom_rect(data = rects, aes(xmin = -Inf, xmax = Inf, ymin = ystart, ymax = yend, fill=col), alpha = 0.3) + 
scale_fill_manual(values=medals) + 
opts(legend.position="none") + 
geom_bar(data=scores, aes(x=category, y=percentage, fill=type), stat="identity") + 
#scale_fill_manual(values = c("indianred1", "indianred4")) + 
scale_x_continuous(breaks = 1:4, labels = labels) 

を書かれたように、これは最初の2つの背景色などの2つの棒グラフの色が同じになります。 2番目のscale_fill_manualコマンド(最後から2番目の行)の "#"を削除すると、背景色コマンドが優先され、背景色はbarchartの2色になります。

にはどうすればgeom_bar棒グラフ(またはどのように私は他の手段で同じ効果を得ることができます)にgeom_rect背景や他への適用1つのscale_fill_manualコマンドを持つことができますか?

答えて

8

"b"rectsscoresの両方に使用しているため、同じ色にマッピングされるという問題があります。長方形はプレースホルダの値のように見えるので、scoresのものより後で並べ替える別のものに変更してください。

rects$col <- c("Z1","Z2","Z3","Z4","Z5") 

scale_fill_manualをすべて(7)色にすることができます。

ggplot() + 
geom_rect(data = rects, aes(xmin = -Inf, xmax = Inf, ymin = ystart, 
          ymax = yend, fill=col), alpha = 0.3) + 
opts(legend.position="none") + 
geom_bar(data=scores, aes(x=category, y=percentage, fill=type), stat="identity") + 
scale_fill_manual(values=c("indianred1", "indianred4", medals)) + 
scale_x_continuous(breaks = 1:4, labels = labels) 

enter image description here

+0

ブリリアント!ありがとうございました。 (私はあなたの写真のようにすべてが出てくるようにscale_fill_manualの値リストの最初にメダルを切り替えなければなりませんでしたが、それはうまくいきました) –

関連する問題