2014-01-22 4 views
1

У меня есть boxplot и хотелось бы добавить простые горизонтальные линии с geom_hline для каждого ящика в отдельности.участок отдельно geom_hline для каждого geomp_boxplot

Я пытался на boxplot, например, из Р. Проблемы таковы:

  • линии охватывают весь сюжет, а не просто boxplot.
  • Они за присуща рефлективными, вербальные .. ;-)

Спасибо за любую помощь заранее.

### ADDING Lines 
    somelines <- data.frame(value=c(0.2,0.3,0.4,0.6,0.7),boxplot.nr=c(1,2,3,4,5)) 

    abc <- adply(matrix(rnorm(100), ncol = 5), 2, quantile, c(0, .25, .5, .75, 1)) 
    b <- ggplot(abc, aes(x = X1, ymin = `0%`, lower = `25%`, middle = `50%`, upper = `75%`, ymax = `100%`)) + 
     geom_hline(aes(yintercept= value),somelines) 
    b + geom_boxplot(stat = "identity") 
    b + geom_boxplot(stat = "identity") + coord_flip() 
    b + geom_boxplot(aes(fill = X1), stat = "identity") 

my try

ответ

1

Вы можете использовать geom_segment(), чтобы добавить эти строки. Используйте boxplot.nr-0.5 для начала линий и boxplot.nr+0.5 для конца строк и value для y и yend. Также добавьте inherit.aes=FALSE внутри geom_segment(), чтобы гарантировать, что geom_segment() не ищет переменную X1, которую вы используете для заполнения для boxplot.

ggplot(abc, aes(x = X1, ymin = `0%`, lower = `25%`, middle = `50%`, 
            upper = `75%`, ymax = `100%`)) + 
    geom_boxplot(aes(fill = X1), stat = "identity")+ 
    geom_segment(data=somelines,aes(x=boxplot.nr-0.5,xend=boxplot.nr+0.5, 
         y=value,yend=value),inherit.aes=FALSE,color="orange",size=1.5) 

Тот же результат может быть также atchieved со вторым вызовом geom_boxplot() - поскольку существует только одно значение на каждом уровне для somelines объект, то будут появляться присущи рефлективный, вербальный в виде линий.

ggplot(abc, aes(x = X1, ymin = `0%`, lower = `25%`, middle = `50%`, 
       upper = `75%`, ymax = `100%`)) + 
    geom_boxplot(aes(fill = X1), stat = "identity")+ 
    geom_boxplot(data=somelines,aes(factor(boxplot.nr),value), 
       inherit.aes=FALSE,color="orange",size=1.5) 

enter image description here

+0

Отлично! Большое спасибо за этот ответ, я бы не понял этого. – dmeu

Смежные вопросы