Чтобы максимизировать пространство, отведенное для данных на графике ggplot, я хочу сложить заголовок оси Y (повернутый по горизонтали для удобства доступа) и легенду. До сих пор это было возможно с помощью legend.position
. Например:
ggplot(iris, aes(Sepal.Length, Petal.Width, shape = Species, colour = Species)) +
geom_point() +
theme(axis.title.y = element_text(angle = 0, vjust = 0.9),
legend.position = c(-0.15, 0.2))
Производит: График ggplot с легендой, расположенной непосредственно под заголовком оси Y
Но теперь я начал использовать ggplot 3.5.0 и получаю сообщение «Предупреждение: числовой аргумент legend.position
в theme()
устарел в ggplot2 3.5.0».
Итак, я пытался создать неустаревшую альтернативу своему коду, используя последнее официальное руководство по легендам ggplot, но безуспешно. Например:
ggplot(iris, aes(Sepal.Length, Petal.Width, shape = Species, colour = Species)) +
geom_point() +
theme(axis.title.y = element_text(angle = 0, vjust = 0.9),
legend.position = "left",
legend.justification.left = "bottom")
Создает график, на котором легенда расположена ниже и слева от заголовка оси Y, а не непосредственно под ним: График ggplot с легендой, расположенной ниже и слева от заголовка оси Y, а не непосредственно под ним
Чтобы получить «старое» поведение, установите legend.position = "inside"
и используйте legend.position.inside
, чтобы передать числовой вектор для размещения легенды.
В приведенном ниже коде используется patchwork
для сравнения старого и нового способа:
library(ggplot2)
p1 <- ggplot(iris, aes(Sepal.Length, Petal.Width, shape = Species, colour = Species)) +
geom_point() +
theme(
axis.title.y = element_text(angle = 0, vjust = 0.9),
legend.position = c(-0.15, 0.2)
)
#> Warning: A numeric `legend.position` argument in `theme()` was deprecated in ggplot2
#> 3.5.0.
#> ℹ Please use the `legend.position.inside` argument of `theme()` instead.
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.
p2 <- ggplot(iris, aes(Sepal.Length, Petal.Width, shape = Species, colour = Species)) +
geom_point() +
theme(
axis.title.y = element_text(angle = 0, vjust = 0.9),
legend.position = "inside",
legend.position.inside = c(-0.15, 0.2)
)
library(patchwork)
p1 / p2