ggplot2图例到底部和水平

Posted

技术标签:

【中文标题】ggplot2图例到底部和水平【英文标题】:ggplot2 legend to bottom and horizontal 【发布时间】:2012-04-19 10:10:24 【问题描述】:

如何将 ggplot2 图例移动到绘图底部并水平转动?

示例代码:

library(reshape2) # for melt
df <- melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
p1 <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))
p1 + scale_fill_continuous(guide = guide_legend())

期望的(近似)结果:

【问题讨论】:

经过 7 年零 8 个月,我终于想通了如何得到这个问题的预期结果 :) 向下滚动到第二个答案。 【参考方案1】:

如果要移动图例的位置,请使用以下代码:

library(reshape2) # for melt
df <- melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
p1 <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))
p1 + scale_fill_continuous(guide = guide_legend()) +
    theme(legend.position="bottom")

这应该会给你想要的结果。

【讨论】:

你知道是否可以在底部绘制一个连续的图例栏? (所以不是中间的数字,而是顶部的数字)。谢谢。 当前ggplot,这给了我警告'opts' is deprecated. Use 'theme' instead. (Deprecated; last used in version 0.9.1)。将opts 替换为theme 有效。 是的,我预计 ggplot 的内部运作会发生变化 使用折旧物品是不好的做法。您可以使用完全相同的方式使用主题:+ theme(legend.position='bottom') 不幸的是,当数字和颜色并排时,会出现一些歧义;请参阅下面的我的回答,尝试对此进行改进。【参考方案2】:

以下是创建所需结果的方法:

library(reshape2); library(tidyverse)
melt(outer(1:4, 1:4), varnames = c("X1", "X2")) %>%
ggplot() + 
  geom_tile(aes(X1, X2, fill = value)) + 
  scale_fill_continuous(guide = guide_legend()) +
  theme(legend.position="bottom",
        legend.spacing.x = unit(0, 'cm'))+
  guides(fill = guide_legend(label.position = "bottom"))

由reprex package (v0.3.0) 于 2019 年 12 月 7 日创建


编辑:不再需要这些不完美的选项,但我将它们留在这里以供参考。

两个不完美的选项不能完全满足您的要求,但非常接近(至少会将颜色放在一起)。

library(reshape2); library(tidyverse)
df <- melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
p1 <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))
p1 + scale_fill_continuous(guide = guide_legend()) +
 theme(legend.position="bottom", legend.direction="vertical")

p1 + scale_fill_continuous(guide = "colorbar") + theme(legend.position="bottom")

由reprex package (v0.2.1) 于 2019 年 2 月 28 日创建

【讨论】:

虽然这在理论上可以回答问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。

以上是关于ggplot2图例到底部和水平的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化:ggplot2可视化分组箱图,将可视化图像的图例(legend)放置在图像底部居中其中图例信息水平平铺​ (position legend bottom center)

R语言ggplot2可视化:ggplot2可视化分组箱图,将可视化图像的图例(legend)放置在图像底部左边左对齐其中图例信息水平平铺​ (position legend bottom left)

R语言ggplot2可视化:ggplot2可视化分组箱图,将可视化图像的图例(legend)放置在图像底部左边左对齐其中图例信息水平平铺​ (position legend bottom left)

R语言ggplot2可视化:ggplot2可视化分组箱图,将可视化图像的图例(legend)和标题(title)放置在图像左上方并左对齐其中图例信息水平平铺(top left)

R语言ggplot2可视化:ggplot2可视化分组箱图,将可视化图像的图例(legend)放置在图像右上方并右对齐其中图例信息水平平铺​ (position legend top right)

将水平线添加到 R 中 ggplot2 中的堆叠条形图,并在图例中显示