Использование ggrepel в ggplot2 - PullRequest
1 голос
/ 31 января 2020

У меня есть график geom_gene_arrow, и мне нужно использовать ggrepel для предотвращения наложения ярлыков. К сожалению, я не смог заставить его работать и получить сообщение об ошибке 'не могу найти функцию "geom_text_repel"'

Рабочий пример только с geom_text:

> ggplot(data, aes(xmin = start, xmax = end, y = genome, fill = colour, forward = direction)) +
     geom_gene_arrow() +
     geom_text(aes(x = end - ((end-start)/2), y = 1.2, label = gene, angle=90)) +
     facet_wrap(~ genome, scales = "free", ncol = 1) +
     theme_void()+
     xlab("")

И с введение geom_text_repel не удается.

> ggplot(data, aes(xmin = start, xmax = end, y = genome, fill = colour, forward = direction)) +
     geom_gene_arrow() +
     geom_text_repel(aes(x = end - ((end-start)/2), y = 1.2, label = gene, angle=90)) +
     facet_wrap(~ genome, scales = "free", ncol = 1) +
     theme_void()+
     xlab("")

пример данных:

genome start end gene function colour direction
A 11638 12786 fadA6 ringdegradation green, -1
A 12798 13454 fadE30 cleavage, blue 1
A 13529 14341 fadD3 ringdegradation green -1

Любое понимание того, что я делаю неправильно, очень ценится!

1 Ответ

1 голос
/ 31 января 2020

Я думаю, вам нужно загрузить пакет ggrepel. На моем сеансе у меня нет проблем с получением графика:

library(ggplot2)
library(ggrepel)
library(gggenes)
ggplot(data, aes(xmin = start, xmax = end, y = genome, fill = colour, forward = direction)) +
  geom_gene_arrow(arrowhead_height = unit(4, "mm"), 
                  arrowhead_width = unit(2, "mm"), arrow_body_height = unit(4, "mm")) +
  geom_text_repel(aes(x = end - ((end-start)/2), y = 1.2, label = gene, angle=90)) +
  facet_wrap(~ genome, scales = "free", ncol = 1) +
  theme_void()+
  xlab("")

enter image description here

А здесь используется geom_text:

library(ggplot2)
  library(ggrepel)
  library(gggenes)
  ggplot(data, aes(xmin = start, xmax = end, y = genome, fill = colour, forward = direction)) +
    geom_gene_arrow(arrowhead_height = unit(4, "mm"), 
                    arrowhead_width = unit(2, "mm"), arrow_body_height = unit(4, "mm")) +
    geom_text(aes(x = end - ((end-start)/2), y = 1.2, label = gene, angle=90)) +
    facet_wrap(~ genome, scales = "free", ncol = 1) +
    theme_void()+
    xlab("")

enter image description here

Вы можете заметить, что на первом графике geom_text_repel работает, поскольку метка не полностью совмещена с половиной стрелки.

Воспроизводимый пример

structure(list(genome = c("A", "A", "A"), start = c(11638L, 12798L, 
13529L), end = c(12786L, 13454L, 14341L), gene = c("fadA6", "fadE30", 
"fadD3"), `function` = c("ringdegradation", "cleavage,", "ringdegradation"
), colour = c("green,", "blue", "green"), direction = c(-1L, 
1L, -1L)), row.names = c(NA, -3L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x56276b4f1350>)
...