Как подавить некоторые (но не все) линии сегмента в ggrepel в R

Я использую ggplot2 для построения графиков двух разных групп данных. У меня слишком много точек, и поэтому, когда я их обозначаю, они перекрываются. Это заставило меня использовать ggrepel с ggplot2. Мне нужно изменить размер и цвет этих групп, чего я смог достичь, но я не могу подавить линии сегмента от точки к метке для одной группы (одна группа не имеет точек вообще). Это, вероятно, легче понять с помощью моего кода:

labels=c("a1","a2","a3","a4","a5","b1","b2","b3","b4","b5")
x<-c(4.7,4.6,-11.0,6.2,11.4,6.1,6.1, -9.9,-9.7,-0.3)
y<-c(13.7,13.6,7.6,9.5,-5.6,10.6,10.6,5.8,9.0,0.1)
mydata<-data.frame(labels,x,y)
mydata$color <- "firebrick"
for(i in 1:5)mydata[i,4]="darkgray"
mydata$segment <- "firebrick"
for(i in 1:5)mydata[i,5]=NA
mydata$size <- 8
for(i in 1:5)mydata[i,6]=5

Что приводит к фрейму данных:

> mydata
   labels     x    y color       segment size
1      a1   4.7 13.7  darkgray     NA       5
2      a2   4.6 13.6  darkgray     NA       5
3      a3 -11.0  7.6  darkgray     NA       5
4      a4   6.2  9.5  darkgray     NA       5
5      a5  11.4 -5.6  darkgray     NA       5
6      b1   6.1 10.6 firebrick firebrick    8
7      b2   6.1 10.6 firebrick firebrick    8
8      b3  -9.9  5.8 firebrick firebrick    8
9      b4  -9.7  9.0 firebrick firebrick    8
10     b5  -0.3  0.1 firebrick firebrick    8

Код ниже для графика:

ggplot(data=mydata, aes(x=x, y=y)) + geom_point(data=mydata[6:10,],color="firebrick") + 
  geom_text_repel(data=mydata,aes(label=labels),color=mydata$color,show.legend=FALSE,
              size=mydata$size,
              segment.color=mydata$segment) +
  geom_hline(yintercept=0, color="black", size=0.5)+geom_vline(xintercept=0,color="black",size=0.5)+
  theme(panel.background=element_rect(color="black",fill="white"),panel.grid.major.y=element_blank(),panel.grid.minor.y=element_blank(),
    panel.grid.major.x=element_blank(),panel.grid.minor.x=element_blank())

Там вполне может быть более простой способ сделать это. Мне нужны линии для красных меток b1-b5, но не для a1-a5. Получившийся сюжет здесь

Как всегда, любые идеи очень ценятся! Я буду обновлять, если я найду решение.

РЕДАКТИРОВАТЬ: что мне нужно из этого графика:

  • a1-a5 меньше, серый, без точек (только метки) и без линий, соединяющих метки с точками (все это достигается с помощью приведенного выше кода)
  • b1-b5 больше, красный, имеет точки и метки и имеет линии, соединяющие точки с метками (кажется, я не могу получить линии сегментов, соединяющиеся с точками, одновременно подавляя их для a1-a5)

Спасибо дж

0 ответов

Другие вопросы по тегам