R / ggplot2:如何匹配重叠区域图中的图例颜色和绘图颜色?

时间:2011-02-13 01:02:31

标签: r colors ggplot2

我有两个区域图(称为'蓝色'和'绿色'),其中green主要位于blue图下,但在极少数点上,它高于{ {1}}情节。我想对两者使用透明度blue,并且还能够为每个透明度指定颜色。我现在的问题是,由于alpha = 0.2图主要位于green图下,因此其区域大多数为混合颜色blue + blue =其他一些颜色,只有少数地方显示其“真正的”绿色。但是,图例当然会将green绘图映射到蓝色,将blue绘图映射为绿色。问题是,当有人看到图表时,他们会感到困惑,因为green情节大多看起来都不是绿色(因为它大部分时间都与蓝色重叠)。

这是我的代码(我的真实应用程序的超简化版本)。

green

enter image description here

如您所见,绿色图的“真绿色”区域非常小,因此df <- data.frame( date = 1:5, blue = 10, green = c(1,5,11,5,1)) df.m <- melt( df, id = 'date', variable_name = 'type' ) df.m$type <- ordered( df.m$type, c('green', 'blue')) ggplot(df.m, aes(date,value)) + geom_area( aes(fill = type), position = 'identity', alpha = 0.2) + scale_fill_manual ( values = c('green', 'blue') ) 的图例颜色与green图的大部分不完全匹配。这当然是设计上的正确行为,但我想知道是否有某种方法可以获得green的图例颜色,以及匹配的重叠green颜色。我尝试过的一件事是将blue+green变量转换为blue,然后将区域绘制堆叠(使用blue - green)。这几乎可以工作但不太令人满意,因为新position = "stack"变量为负的日期的颜色看起来很奇怪。

是否还有其他方法可以获取blue的图例颜色以及“重叠蓝/绿”区域的颜色以匹配?也许直接指定图例颜色的方法?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

我不认为通过ggplot2中的简单调用可以在图例中定义自定义颜色,但是如果你坚持指定颜色,你可以在opts(legend.position = "none")之前绘制没有图例的图并附加一个单独的例如,传说。使用网格视口。包gridExtra也可以成为后一项任务的重要资源。