繁体   English   中英

R / 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM