2016-08-08 53 views
3

Ich habe ein gestapeltes horizontales Balkendiagramm mit nur einem Balken. Ich möchte die verschiedenen Segmente beschriften, wobei jedes Label das jeweilige Segment beginnt. Da einige Segmente jedoch sehr schmal sind, müssen die Beschriftungen unterschiedliche Ebenen haben und wie in diesem Beispiel über eine gerade Linie mit dem Balken verbunden sein.r Linien oder Segmente zum Balkendiagramm hinzufügen

example bar chart

ich die barchart barplot() und die Etiketten mit mit mtext(..., side=3, line=1,...) können die Linien erhalten, aber nicht erstellen können. segments() scheint nicht zu funktionieren, weil Koordinaten in y-Richtung nicht richtig funktionieren (oder ich habe das Koordinatensystem für Balkendiagramme noch nicht herausgefunden).

Hat jemand einen Hinweis darauf, wie diese Zeilen mit Basisgrafiken erstellt werden?

Antwort

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)