向 ggplot geom_tile 添加多个图例
Posted
技术标签:
【中文标题】向 ggplot geom_tile 添加多个图例【英文标题】:Add multiple legends to ggplot geom_tile 【发布时间】:2018-08-14 06:39:19 【问题描述】:我正在使用 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))
对重新缩放的 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))
然而,我想做的是有一个显示两个不同传说的单一情节,看起来像这个模型:
现在,我想这可以通过创建两个图来实现,在其中一个图中找到代表图例的 grob,然后巧妙地将其添加到第二个图中......但是,有没有更简单的方法?可以俯瞰吗?
非常感谢!
【问题讨论】:
Multiple legends for a ggplot in R的可能重复 【参考方案1】:请添加代码
aes(color = z_rescale) +
scale_color_gradient(low = "blue", high = "red") +
在geom_tile()
行之后,您将获得所需的
【讨论】:
以上是关于向 ggplot geom_tile 添加多个图例的主要内容,如果未能解决你的问题,请参考以下文章