Это сделает работу, используя ggplot2
:
ggplot(df) +
# Split per elevator and floor
facet_grid(level~elevator, as.table=FALSE, labeller=label_both) +
# Add arrow "in" and its text
geom_segment(x=0, y=0, xend=2, yend=0, size=10, color="#A0C080",
lineend="butt", linejoin="mitre",
arrow=arrow(length=unit(.02, "native"), type="closed")) +
geom_text(aes(label=input), x=1, y=0, hjust=.5, size=8) +
# Add arrow "out" and its text
geom_segment(x=2, y=8, xend=0, yend=8, size=10, color="#C0B0B0",
lineend="butt", linejoin="mitre",
arrow=arrow(length=unit(.02, "native"), type="closed")) +
geom_text(aes(label=out), x=1, y=8, hjust=.5, size=8) +
# Draw floors
geom_rect(xmin=2.5, xmax=4, ymin=-4, ymax=12) +
# Graphical tweaks
theme_light() + theme(panel.grid=element_blank()) + ylim(-4,12) + xlim(-.5,3.5)
PS: если вы действительно хотите включить стрелки со счетчиком 0, либо включите их в свой фрейм данных, либо используйте tidyr::complete(...)
(см. Документ)