[英]How to match legend colors and plot colors in overlapping area plots in ggplot2
[英]R/ggplot2: how to match legend and plot colors in overlapping area plots?
我有两个面积图(分别称为“蓝色”和“绿色”),其中green
大部分位于blue
图之下,但在极少数点上,它比blue
图高。 我想对两个都使用透明度,例如alpha = 0.2
,并且还可以为每个颜色指定颜色。 现在我的问题是,由于green
图大部分位于blue
图之下,因此其区域大部分具有blue
+ green
=其他颜色的混合色,并且仅在少数地方显示其“真实”绿色。 但是, 图例当然会显示blue
图映射到蓝色, green
图映射到绿色。 问题是,当某人查看图形时,他们会感到困惑,因为green
图大部分看起来是非绿色的(因为大部分时间它都与蓝色重叠)。
这是我的代码(我的实际应用程序的超级简化版)。
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
变量为负的日期上的颜色看起来很奇怪。
还有其他方法可以使green
的图例颜色与“重叠的蓝色/绿色”区域的颜色相匹配吗? 也许直接指定图例颜色的方法? 任何帮助表示赞赏!
我认为通过ggplot2中的简单调用就无法在图例中定义自定义颜色,但是如果您坚持要指定颜色,则可以通过opts(legend.position = "none")
绘制没有图例的图并附加一个单独的图例,例如 使用网格视口。 软件包gridExtra可能也是完成后一项任务的重要资源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.