图例位置基于 ggplot2

时间:2021-07-21 11:09:58

标签: r ggplot2 legend

使用ggplot2的{​​{1}}(和legend.position),两个可用参数表示图例的相对位置,但是如果我想根据坐标定位图例怎么办情节? 我找不到办法。

这很奇怪,因为 legend.justification 给出了允许这样的事情的 x 和 y 参数。

这是一些玩具数据

annotate

给出:this

如果我希望图例的左下角位于坐标 (10,100) 上呢?

1 个答案:

答案 0 :(得分:2)

我认为没有一种简单的方法可以做到这一点。我能想到的唯一方法是构建绘图对象以提取轴的范围,以便将 (10, 100) 转换为可与图例位置一起使用的相对坐标。不可否认,这很hacky...

library(tidyverse)

p <- ggplot(data = mtcars, aes(x = mpg, y = disp, color = factor(cyl))) +
  geom_point()

ranges <- ggplot_build(p) %>% 
  pluck("layout", "panel_params", 1) %>% 
  `[`(c("x.range", "y.range"))

x <- (10 - ranges$x.range[1]) / (ranges$x.range[2] - ranges$x.range[1])
y <- (100 - ranges$y.range[1]) / (ranges$y.range[2] - ranges$y.range[1])

p + theme(legend.position = c(x, y), legend.justification = c(0, 0))

reprex package (v1.0.0) 于 2021 年 7 月 21 日创建

相关问题