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)