ggplot geom_text_repel текст, превышающий предел сюжета - PullRequest
1 голос
/ 20 сентября 2019

Как я могу запретить geom_text_repel () отображать часть меток, когда метки находятся близко к границе графика.Вот пример с facet_grid, например, в фасете chr3 метка вверху "ZNF717" отображается не полностью.

enter image description here

пример с mtcars с форсированием20 граней и длинные метки:

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)

enter image description here

1 Ответ

0 голосов
/ 20 сентября 2019

Каждая панель является автономной и по умолчанию построение графика ограничено областью построения.Это можно изменить, изменив координаты по умолчанию.В этом экстремальном примере необходимо было использовать 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 для поворота надписей или сокращения текста, используемого для надписей.

...