9

この質問は、以前の ggplot2 の背景色に関する質問の続きです。

そこにある答えから、geom_rect5 つの異なる色を持つプロットに背景を与えるために使用できるようになりました。その上で、2 つの異なる色を使用する棒グラフをプロットしたいと思います。これらのタスクはそれぞれ個別に実行できますが、それらを組み合わせようとすると、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 番目のコマンド (最後から 2 番目の行) の " " を削除するとscale_fill_manual、背景色のコマンドがオーバーライドされて、バーが必要な色になりますが、背景はbarchart.

1 つのコマンドを背景にscale_fill_manual適用し、もう 1 つのコマンドを棒グラフに適用するにはどうすればよいですか (または、他の方法で同じ効果を得るにはどうすればよいですか)。geom_rectgeom_bar

4

1 に答える 1

9

問題は、"a""b"の両方rectsでとを使用しscoresているため、同じ色にマップされることです。長方形はプレースホルダー値のように見えるので、で何よりも遅くソートされる別の値に変更しますscores

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

scale_fill_manualこれで、すべて(7)色の1つを作成できます。

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) 

ここに画像の説明を入力してください

于 2012-04-10T23:33:50.497 に答える