ggplot 3.5.0中legend.position数值参数已弃用,如何精准控制图例位置?
解决ggplot2 3.5.0中y轴水平标题与图例堆叠的布局问题
ggplot2 3.5.0弃用了legend.position的数值向量设置,改用字符串位置配合对齐参数实现自定义布局。要让水平y轴标题和图例紧密堆叠(图例在标题正下方),可以通过调整标题对齐方式、图例位置和对齐参数达成,具体代码如下:
ggplot(iris, aes(Sepal.Length, Petal.Width, shape = Species, colour = Species)) + geom_point() + theme( # 配置y轴标题:水平显示、右对齐、顶部垂直对齐,右侧留间距避免贴绘图区 axis.title.y = element_text(angle = 0, vjust = 1, hjust = 1, margin = margin(r = 10)), # 指定图例位于左侧外部 legend.position = "left", # 让图例右上角对齐锚点,实现和y轴标题右侧对齐、顶部对齐 legend.justification = c(1, 1), # 图例框整体顶部对齐,保证堆叠整齐 legend.box.just = "top", # 调整图例边距,和标题紧密贴合 legend.margin = margin(t = 5, b = 0, l = 0, r = 0) )
参数说明:
axis.title.y的hjust=1让水平标题右对齐,和图例右侧边缘对齐;vjust=1把标题固定在y轴区域顶部,方便图例在下方堆叠;margin(r=10)给标题右侧留空间,避免和绘图区内容重叠。legend.position="left"指定图例放在绘图区左侧外部,替代原来的数值外部位置设置。legend.justification=c(1,1)设置图例右上角作为对齐基准点,确保图例和y轴标题的右侧、顶部边缘对齐。legend.box.just="top"保证图例整体框体顶部对齐,避免内部元素错位。legend.margin的t=5给图例顶部留少量间距,和标题分隔开避免重叠。
如果需要将图例放在绘图区内部的自定义位置,现在可以使用legend.position.inside参数(替代原来的数值legend.position),比如legend.position.inside = c(0.05, 0.2)就能实现类似旧代码的内部靠左位置。
内容的提问来源于stack exchange,提问作者Elizabeth Richardson
相关产品推荐
相关产品推荐

