是否可以将0处的水平线添加到下图所示的点上?
这是到目前为止的代码:
ggplot(data, aes(x=change, y=industry, color=geo)) + geom_point() +
scale_x_continuous(labels = scales::comma) + geom_vline(xintercept = 0)
或者,我可以使用geom_bar()
,但是我不确定如何在不加总和的情况下同时显示伦敦和英国。
答案 0 :(得分:0)
tl; dr ,您可以将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
。