Глядя на документацию для ggrepel
, не похоже, что вы можете указать «зону исключения меток», которая фактически является тем, что вы ищете. Лучшим вариантом было бы использовать xlim
и ylim
для определения разделов, а затем соответствующим образом «разделить» ваши данные, чтобы создать иллюзию «зоны исключения меток».
Для этого я сломал Ваши данные в квадранты:
ggplot(data = data, aes(x = x, y = y, group = z, color = z, label = z)) +
geom_point() +
geom_label_repel(data=subset(data, x<15 & y<0),
segment.alpha = .5, xlim = c(-5, 0), ylim = c(-5, -2.5)) +
geom_label_repel(data=subset(data, x<15 & y>0),
segment.alpha = .5, xlim = c(-5, 0), ylim = c(2.5, 5)) +
geom_label_repel(data=subset(data, x>15 & y>0),
segment.alpha = .5, xlim = c(30, 35), ylim = c(2.5, 5)) +
geom_label_repel(data=subset(data, x>15 & y<0),
segment.alpha = .5, xlim = c(30, 35), ylim = c(-5, -2.5)) +
scale_x_continuous(limits = c(-5, 35)) +
scale_y_continuous(limits = c(-5, 5))
Это дает вам это:
Вид EW, на мой взгляд. Чтобы получить эффект, который вы, вероятно, ищете, я бы просто разделил данные на значения y выше и ниже среднего и позволил ggrepel
распределить их по оси x в зависимости от ситуации. Я играл с аргументом force=
, чтобы "pu sh" переместить их по оси x:
ggplot(data = data, aes(x = x, y = y, group = z, color = z, label = z)) +
+ geom_point() +
geom_label_repel(data=subset(data, y<0), force=25,
segment.alpha = .5, ylim = c(-5, -2.5)) +
geom_label_repel(data=subset(data, y>0), force=25,
segment.alpha = .5, ylim = c(2.5, 5)) +
scale_x_continuous(limits = c(-5, 35)) +
scale_y_continuous(limits = c(-5, 5))
Вы можете сделать То же самое переключение осей (разделение данных по значению х), но я думаю, что здесь это будет работать лучше, поскольку данные распределены по большей области оси х.