ggplot2:将图例移至角落但保持在边缘?

3
我想将ggplot2图例移到角落,但不要放在图表内部,它应该仍然位于边缘而不是中心。我发现的唯一选项是选择“顶部”,“右侧”等,或者在图表本身中使用自定义坐标。

例如,以这张图片为例:

![Hadley Plot](https://istack.dev59.com/zUrLW.webp)

想象一下将图例从当前位置向下滑动到右下角。

我尝试将图例位置设置为c(12, 2),但它就会消失。

将其设置为“right”是当前图像的设置,但我需要将图例向下滑动到“bottom-right”。

使用(scale_x_continuous())将x轴扩展到12,利用额外的空间,这样做是否可行? - lawyeR
有创意,但还不够精细,需要更加 polished 才能让副总裁满意。 - jsuprr
1个回答

2
你可以扩展图的边缘,然后将图例位置设置在图外。
创建你的数据:
dat = data.frame(x=1:10, y=10:1, type=rep(c('a', 'b'), each=5))

使用theme中的plot.marginlegend.position元素。首先使用您设置边距的unit对象:

margins = unit(c(1, 4, 1, 1), 'lines')

然后使用边距和图例位置调用ggplot。

ggplot(dat, aes(x, y, color=type)) + 
    geom_point() +
    theme(plot.margin=margins,
          legend.position=c(1.075, 0))

通常情况下,图例位置是在0到1之间设置的(使用标准化父级坐标),而不是绘图的实际x和y坐标。

我试了你的代码。在边距部分,我得到了以下错误:错误:找不到函数“unit”。编辑:事实证明,您需要附加grid包才能使用unit命令。现在它完美地工作了。谢谢! - jsuprr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接