将多个图例添加到ggplot geom_tile

时间:2018-03-06 11:56:13

标签: r ggplot2

我正在使用ggplot来创建热图样式图,并希望添加第二个图例,其中数据以不同的方式缩放。我想知道是否有一种简单的方法可以做到这一点。

我不相信这是其他“多重传说”问题的重复,例如Multiple legends for a ggplot in R至关重要的是,我想为同样的美学添加额外的传说 - 即一个美学映射,两个传说。

示例代码

# Create a dataframe with some dummy data

x <- c()
y <- c()

for(i in 1:100){
  for(j in 1:100){

    x <- c(x, i)
    y <- c(y, j)
  }
}

example_data <- data.frame(x, y)
example_data$z <- example_data$x*example_data$y
example_data$z_rescale <- example_data$z*0.5

现在我们已经有了一些数据,我希望将其作为热图,将“z”作为颜色渐变。

ggplot(example_data, aes(x = x, y = y, fill = z)) + 
  geom_tile() +
  scale_fill_gradient(low = "blue", high = "red") +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0))

enter image description here

对重新缩放的z执行相同操作会给出相同的图,但使用重新缩放的图例:

ggplot(example_data, aes(x = x, y = y, fill = z_rescale)) + 
  geom_tile() +
  scale_fill_gradient(low = "blue", high = "red") +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0))

enter image description here

我想要做的是有一个单独的情节显示两个不同的传说,看起来像这个模型:

enter image description here

现在,我想通过创建两个图来实现这一点,在其中一个图中找到代表图例的grob并巧妙地将其添加到第二个图中...但是,有一种更简单的方法吗?我可以俯瞰吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

请添加代码

aes(color = z_rescale) +
scale_color_gradient(low = "blue", high = "red") +

geom_tile()行之后,您将获得所需的output