Каждая панель является автономной и по умолчанию построение графика ограничено областью построения.Это можно изменить, изменив координаты по умолчанию.В этом экстремальном примере необходимо было использовать facet_wrap () с двумя строками.Я также уменьшил размер шрифта надписей и ограничил отталкивание, чтобы он перемещал надписи только вертикально.(Очевидно, что тиковые метки и названия панелей должны быть доработаны при реальном использовании.)
library(ggplot2)
library(ggrepel)
library(dplyr)
mtcars %>%
rowwise() %>%
mutate(label="test_label") %>%
mutate(facet=runif(n = n(),min = 1,max=20)) %>%
ggplot(aes(x=disp,y=hp,label=label)) +
geom_text_repel(direction = "y", hjust = 0.5, size = 2) +
facet_wrap(~facet, nrow = 2) +
coord_cartesian(clip = "off")
Приведенный выше код отвечает на вопрос, но создает новую проблему, по крайней мере, в примере mtcars
, поскольку геомы работают надот панели к панели, отталкивание не может предотвратить перекрытие этикеток, которые распространяются на соседние панели.Удивительно, но, кроме того, при сохранении в растровые форматы происходит некоторое неожиданное обрезание в левой части, но не при сохранении в PDF (по крайней мере, в RStudio).
Еще один вариант - убедиться, что метки помещаются вдоступное пространство с помощью эстетики angle
для поворота надписей или сокращения текста, используемого для надписей.