Как убрать джиттер / убрать перекрытие для меток geom_text

Рисунок

Можно ли немного сместить метки аббревиатуры состояний на рисунке, чтобы они не перекрывались? Если я использую check_overlap = TRUE, он удаляет некоторые перекрывающиеся наблюдения, а я этого не хочу. Мне также не нужен geom_label_repel, поскольку у него торчат метки и они перемещаются по линии под углом 45 градусов, которую я включил (чего я не хочу).

Вот соответствующая часть моего кода для справки:

ggplot(df, aes(x = huff_margin_dem, y = margin16dem_state, label = abbrev)) +
  geom_abline(intercept = 0) +
  geom_text(fontface = "bold")

person Alexander Agadjanian    schedule 11.11.2016    source источник
comment
Без воспроизводимого кода невозможно помочь вам напрямую. Однако вам следует внимательно изучить ggrepel, чтобы найти контроль над перемещением этикеток.   -  person Mark Peterson    schedule 11.11.2016


Ответы (2)


Вы пробовали position=position_jitter()? Вы можете настроить width и height по своему усмотрению.

ggplot(df, aes(x = huff_margin_dem, y = margin16dem_state, label = abbrev)) +
  geom_abline(intercept = 0) +
  geom_text(fontface = "bold",position=position_jitter(width=1,height=1))

ИЗМЕНИТЬ Пример изменения только определенного ярлыка

+geom_text(fontface = "bold",
position=position_jitter(width=ifelse(df$abbrev=='KS',1,0),
      height=ifelse(df$abbrev=='KS',1,0)))

Или несколько этикеток

df$jit<-with(df, ifelse(abbrev == "KS" | abbrev == "LA", 1, 2))

+geom_text(fontface = "bold",
    position=position_jitter(width=df$jit,height=df$jit))
person J.Con    schedule 11.11.2016
comment
Спасибо тебе за это! Вы случайно не знаете, есть ли способ искажать отдельные тексты, а не все их? Например, в примере с изображением выше, есть ли способ смешать наблюдения с текстом KS и LA, но не с другими наблюдениями? - person Alexander Agadjanian; 12.11.2016

Просто подумал, что я укажу, что ggrepel::geom_text_repel сделает то, что вам нужно. Учитывая, что часть текста в вашем примере уже перекрывается строкой, я полагаю, что, возможно, это label часть geom_label_repel, которая вам не нравится, из-за фона, который она будет размещать позади вашего текста, блокируя строку.

Используя ваш пример:

ggplot(df) +
  geom_text_repel(aes(x = huff_margin_dem, 
                      y = margin16dem_state, 
                      label = abbrev))
person conor    schedule 15.11.2018
comment
Согласовано! Хотя это может быть более понятно с эстетикой внутри ggplot (), как и другие примеры: ggplot (df, aes (x = huff_margin_dem, y = margin16dem_state, label = abbrev)) + geom_text_repel () - person Billy Raseman; 15.03.2019
comment
В моих экспериментах ggrepel :: geom_text_repel выполняет лучшую работу по аккуратному отображению неперекрывающихся меток, чем манипулирование аргументами position = position_jitter (), последнее фигурирует в предыдущем ответе. - person Rick Pack; 15.08.2019