tl; др вы можете использовать geom_bar()
с position="stack", stat="identity"
. Или вы можете использовать geom_segment()
.
настроить данные
dd <- expand.grid(industry=c("property",
"manufacturing",
"other"),
geo=c("London","UK"))
set.seed(101)
dd$change <- runif(6,min=-30,max=30)
Вот как вы могли бы сделать это с geom_bar
library(ggplot2)
ggplot(dd,aes(x=industry,y=change,
fill=geo))+
geom_bar(stat="identity",
position="dodge")+
coord_flip()
Или с geom_segment()
:
ggplot(dd,aes(x=change,y=industry,
colour=geo))+
geom_point(size=2)+
geom_segment(aes(xend=0,yend=industry))
Возможно, вы захотите вручную уклониться от позиции во втором случае, но position_dodge
в ggplot
может уклоняться только по горизонтали, поэтому вам следует либо переключить x и y и использовать coord_flip()
, либо использовать position_dodgev
из ggstance
пакет.