Вероятно, некоторая комбинация заливки и альфа-канала может использоваться для отображения основного перекрытия.Вот идея:
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](https://i.stack.imgur.com/uqTzP.png)
чем темнее область, тем больше она перекрывается.Это может быть удобно, если есть несколько совпадений, но если их много, я бы выделил их следующим образом:
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](https://i.stack.imgur.com/4T8a6.png)
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))