2016-10-19 6 views
0

Я воздействую на некоторое уплощение перекрывающихся диапазонов и хотели бы, чтобы визуализировать исходные данные (перекрытием) и результирующий набор (сплющенную) следующим образом:Визуализация перекрывающиеся и не перекрывающиеся диапазоны

Исходные данные: enter image description here

Результирующий набор: enter image description here

ли такое возможно с R и, например, ggplot2?

ответ

2
read.table(header=TRUE, sep=",", text="color,start,end 
red,12.5,13.8 
blue,0.0,5.4 
green,2.0,12.0 
yellow,3.5,6.7 
orange,6.7,10.0", stringsAsFactors=FALSE) -> df 

library(ggplot2) 

df$color <- factor(df$color, levels=rev(df$color)) 

ggplot(df) + 
    geom_segment(aes(x=start, xend=end, y=color, yend=color, color=color), size=10) + 
    scale_x_continuous(expand=c(0,0)) + 
    scale_color_identity() + 
    labs(x=NULL, y=NULL) + 
    theme_minimal() + 
    theme(panel.grid=element_blank()) + 
    theme(axis.text.x=element_blank()) + 
    theme(plot.margin=margin(30,30,30,30)) 

enter image description here

Есть другие должности SO, которые показывают, как получить Y ярлыки, как вы показали (мы не можем сделать все работа для вас ;-)

1

Ответ на вторую часть вопроса может быть полезным ответом @hrbrmstr для первой части. Мы можем использовать overplotting в наших интересах и просто установить координаты y для сегментов на фиксированное значение (например, 1, где «красный»):

p <- ggplot(df) + 
    geom_segment(aes(x=start, xend=end, color=color), 
        y=1, yend=1, size=10) + 
    scale_x_continuous(expand=c(0,0)) + scale_color_identity() + 
    labs(x=NULL, y=NULL) + 
    theme_minimal() +theme(panel.grid=element_blank()) + 
    theme(axis.text.x=element_blank()) + 
    theme(plot.margin=margin(30,30,30,30)) 
print(p) 
Смежные вопросы