Построение перекрывающихся geom_rect для различных значений ymin и ymax - PullRequest
0 голосов
/ 24 августа 2018

Я хотел бы представить данные ниже как geom_rect, используя ggplot2 в R.Можно ли построить что-то, что накладывается друг на друга?Это немного сложно для меня, так как для построения geom_rect необходимо указать ymin и ymax.Любая помощь так ценится!

chr start stop 
a   3   7
a   6   8
a   5   10
a   12  14
b   6   8
b   3   8
b   2   5
b   2   5

Genes <- ggplot(mydata, aes(xmin=start,ymin=0.20,xmax=stop,ymax=0.50),inherit.aes=FALSE) +
  xlab("position") +
  geom_rect(color="black") +
  theme(legend.position="none") +
  theme_bw() +
  theme(text=element_text(size=10)) +
  facet_wrap(~chr, ncol = 2, strip.position = "right")
plot(Genes)

1 Ответ

0 голосов
/ 24 августа 2018

Вероятно, некоторая комбинация заливки и альфа-канала может использоваться для отображения основного перекрытия.Вот идея:

ggplot(df %>%
         mutate(n = 1:n()),
       aes(xmin = start,
           ymin = as.numeric(chr) - 0.1,
           xmax = stop,
           ymax = as.numeric(chr) + 0.1)) +
  xlab("position") +
  geom_rect(color = "black", alpha = 0.5) +
  scale_y_continuous(breaks = c(1, 2),
                     labels = levels(df$chr))+
  theme(legend.position = "none",
        text = element_text(size = 10)) +
  theme_bw() 

enter image description here

чем темнее область, тем больше она перекрывается.Это может быть удобно, если есть несколько совпадений, но если их много, я бы выделил их следующим образом:

ggplot(df %>%
         group_by(chr) %>%
         mutate(n = 1:n()),
       aes(xmin = start,
           ymin = n - 0.5,
           xmax = stop,
           ymax = n + 0.5)) +
  xlab("position") +
  geom_rect(color = "black", alpha = 0.5) +
  facet_wrap(~chr, ncol = 1, strip.position = "right")+
  theme_bw() +
  theme(legend.position = "none",
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank())

enter image description here

data:

structure(list(chr = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L), .Label = c("a", "b"), class = "factor"), start = c(3L, 6L, 
5L, 12L, 6L, 3L, 2L, 2L), stop = c(7L, 8L, 10L, 14L, 8L, 8L, 
5L, 5L)), .Names = c("chr", "start", "stop"), class = "data.frame", row.names = c(NA, 
-8L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...