2016-08-08 183 views
3

我有一个只有一个条形的堆叠水平条形图。我想标记不同的细分市场,每个细分市场都有自己的标签。但是,由于某些线段非常窄,因此标签需要处于不同的层次,并且应该通过直线与线条连接,如本例中所示。r将线条或线段添加到条形图

example bar chart

我可以创建使用barplot()和使用mtext(..., side=3, line=1,...)标签的条形图,但不能得到线。 segments()似乎不起作用,因为在y方向上的坐标不能正常工作(或者我还没有计算出条形图的坐标系)。

有没有人有关于如何使用基础图形创建这些线的提示?

回答

5
## bogus data 
dat <- c(1,3,1,2) 
nb <- length(dat) 
## basic barplot 
barplot(cbind(dat), col=1:nb, horiz=TRUE, ylim=c(0,0.7), wid=0.2) 

## location of the vertical segments 
xdat <- c(0, cumsum(dat[-nb])) 

## create vector of jagged heights for label placement/vertical segment ends 
h1 <- 0.36 
h2 <- 0.4 
heights <- c(h2,h1,h2,h1) 
segments(x0=xdat, x1=xdat, y0=rep(0.1,nb), y1=heights) 
text(x=xdat+0.1, y=heights, paste("Segment",1:nb), adj=0)