2017-04-26 11 views
0

このggplotは、geom_label_repel()メソッドによってラベルが配置されています。それはかなり大丈夫ですが、私はすべてのラベルがgeom_line()の上ではなく、下ではなく、場合によっては起こります。geom_label_repel()above geom_line()

enter image description here

これは、グラフを生成するコードである:

ggplot(data, 
    aes(x=daydelta,y=day1ret) 
    ) + 
    geom_line(color='steelblue',size=2) + 
    geom_label_repel(aes(label = paste0(round(day1ret*100,2),"%")),box.padding = unit(0.6, "lines"),label.size = 0.1)+ 
    scale_x_continuous(limits = c(1,15),breaks=1:15,minor_breaks = 1:15) + 
    scale_y_continuous(limits = c(0,1),breaks=seq(0,1,0.1),minor_breaks = seq(0,1,0.1),labels = paste0(seq(0,1,0.1)*100,"%")) + 
    ggtitle("RETENTION BY USERID") + 
    theme(plot.title = element_text(hjust = 0.5))+ 
    xlab("Days from Register\n (baseline: Day 1)")+ 
    ylab("Retention as % of returning users from Day 1")+ 
    geom_segment(mapping=aes(x=daydelta,y=0,xend=daydelta,yend=day1ret),size=0.5,color="red",linetype=2) 
+3

は 'geom_label_repel' – ricoderks

答えて

1

代わりのデータ線からのオフセットラベルをプロットを乱雑、なぜそれらの実際のxおよびyにラベルを配置しません値?視覚的にははるかに洗練されており、ラベルを表示するデータ値以外の場所にラベルを配置することで、視聴者の注意をそらすことはありません。たとえば:

library(ggplot2) 
library(scales) 

dat = data.frame(x=1:10, y=c(1, seq(.3,.1,length=9))) 

ggplot(dat, aes(x,y)) + 
    geom_line() + 
    geom_label(aes(label=paste0(sprintf("%1.1f",y*100),"%")), size=3, label.padding=unit(2,"pt")) + 
    scale_y_continuous(labels=percent, limits=c(0,1)) + 
    scale_x_continuous(breaks=dat$x) + 
    theme_classic() 

enter image description here

+0

完璧なソリューションのための' 'nudge_x'とnudge_y'を見て、あなたに多くのことを感謝します。 – intael

関連する問題