Look of arrows in ggplot2 geom_segment()

前端 未结 2 557
时光取名叫无心
时光取名叫无心 2020-12-29 21:32

I\'m trying to make a plot with arrows in ggplot2 looking something like this, which was made using base R grapics. (colors are not important)

2条回答
  •  伪装坚强ぢ
    2020-12-29 22:08

    The challenge seems to be that the arrow constructor from the grid package gets messed up if size is invoked in the geom_segment block.

    so

    p <- ggplot(df3) + coord_flip()
    
    p1 <- p + geom_bar(aes(x=group,y=max(c(value1,value2))*1.1),width=0.2, stat="identity",position="identity",alpha=0.2)
    
    df1<-filter(df3,time=="1999")
    
    p1 + geom_segment(data=df1,aes(x=group,xend=group,y=value1,yend=value2),color="blue",size=8,arrow=arrow(angle=20,type="closed",ends="last",length=unit(1,"cm")))
    

    looks ridiculous as you show. I tried the workaround of of separating the segment into just a fat segment and an arrow on a skinny segment (two layers) like so:

    p2<-p1 + geom_segment(data=df1,aes(x=group,xend=group,y=value1,yend=value2), color="blue",arrow=arrow(angle=20,type="closed",ends="last",length=unit(1,"cm")))
    
    p2 + geom_segment(data=df1,aes(x=group,xend=group,y=value1,yend=value2), color="blue",size=8)
    

    but now the fat segment end is not mitred and so obscures the arrow.

    Fixing the arrow parameter seems to be needed.

提交回复
热议问题