ggplot 中两个不同颜色的键

mar*_*arc 1 r color-key ggplot2

我想使用两种不同的色标绘制点两次:

在此示例中,5 个点被淹没,颜色被映射到两个协变量(cov1 和 cov2):cov1 和 cov2 分别采用不同的尺度 1 到 5 和 0.01 到 0.05。

我希望有 2 个独立的颜色键,一个用于 cov1,一个用于 cov2,有点如下图所示。然而,在下图中,我使用 'color = cov1' end 'fill = cov2' 来带来另一个颜色键......

任何帮助,将不胜感激。

   gg1 <- ggplot(data = df1 , aes( x = x , y = y ) ) +
   geom_point( aes(x = x , y = y - 1 , color = cov1 ))  +
   geom_point( aes(x = x , y = y + 1 , color =  cov2  )) +
   scale_y_continuous(limits = c(-3,3)) 

  gg2 <- ggplot(data = df1 , aes( x = x , y = y ) ) +
  geom_point( aes(x = x , y = y - 1 , color = cov1 ))  +
  geom_point( aes(x = x , y = y + 1 , fill =  cov2  ), pch = 21 ) +
  scale_y_continuous(limits = c(-3,3)) 

grid.arrange( gg1 , gg2 , ncol = 2 )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

小智 6

基本上ggplot2如果我没记错的话是不可能的。但这个存储库可能是您的答案:

https://github.com/eliocamp/ggnewscale

或这个(在上一个的描述中提到):

https://github.com/clauswilke/relayer

ggplot2我已经很久没有使用过,所以对这两个不太熟悉,但我记得我至少用过其中一个。

我刚刚写了一个快速示例来检查它是否有效:

d1 <- data.frame(x=1:5, y=1)
d2 <- data.frame(x=1:5, y=2)

library(ggplot2)
library(ggnewscale)

ggplot() +
  geom_point(data = d1, aes(x=x, y=y, color = x)) +
  scale_color_continuous(low = "#0000aa", high="#ffffff") +
  new_scale_color() +
  geom_point(data = d2, aes(x=x, y=y, color = x)) +
  scale_color_continuous(low = "#aa0000", high="#00aa00") 
Run Code Online (Sandbox Code Playgroud)

例子

它似乎按你想要的方式工作。