Использование очень простых команд может дать вам больше контроля над макетом и сделать вещи более аккуратными с точки зрения графического макета.В моем подходе я использую только пакет fields
для создания горизонтальных линий, остальное делается с помощью базовых команд из graphics
:
#Create example data with coordinates for plotting height of bars
position <- c(0, 1, 3, 4, 5, 7, 8, 9, 0, 1, 2, 4.5, 7, 8, 9)
group <- c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2)
barheight <- c(0.5, 0.4, 0.4, 0.4, 0.6, 0.3, 0.4, 1, 0.75, 0.75, 0.75, 1, 0.8, 0.2, 0.6)
y.start <- c(group-barheight/2)
y.end <- c(group+barheight/2)
mydf <- data.frame (position, group, barheight, y.start, y.end)
#Remove any crap from the plot
plot(0,type="n",ylim=c(0,3),xlim=c(0,10),axes=F,ylab="",xlab="")
#Create two horizontal lines
require(fields)
yline(1,lwd=4)
yline(2,lwd=4)
#Create text for the lines
text(10,1.1,"Group 1",cex=0.7)
text(10,2.1,"Group 2",cex=0.7)
#Draw vertical bars
segments(mydf$position[1:8],mydf$y.start[1:8],y1=mydf$y.end[1:8])
segments(mydf$position[9:15],mydf$y.start[9:15],y1=mydf$y.end[9:15])
#Add circle in custom position
require(plotrix)
draw.circle(mydf$position[14],2,0.2)
draw.circle(mydf$position[4],1,0.2)