Каждая панель автономна, и по умолчанию отображение ограничено областью построения. Это можно переопределить, изменив координаты по умолчанию. В этом крайнем примере необходимо было использовать 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
для поворота меток или сокращения текста, используемого для меток.
person
Pedro Aphalo
schedule
20.09.2019
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() + facet_grid(~facet)
- person Nicolas Rosewick   schedule 20.09.2019+ coord_cartesian(clip="off")
- person Marco Sandri   schedule 20.09.2019