从0到ggplot2中的点的水平线

时间:2019-03-10 16:34:37

标签: r ggplot2 visualization

是否可以将0处的水平线添加到下图所示的点上?

这是到目前为止的代码:

ggplot(data, aes(x=change, y=industry, color=geo)) + geom_point() + 
scale_x_continuous(labels = scales::comma) + geom_vline(xintercept = 0)

或者,我可以使用geom_bar(),但是我不确定如何在不加总和的情况下同时显示伦敦和英国。

image link

1 个答案:

答案 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