使用ggplot2
的{{1}}(和legend.position
),两个可用参数表示图例的相对位置,但是如果我想根据坐标定位图例怎么办情节?
我找不到办法。
这很奇怪,因为 legend.justification
给出了允许这样的事情的 x 和 y 参数。
这是一些玩具数据
annotate
如果我希望图例的左下角位于坐标 (10,100) 上呢?
答案 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 日创建