ggplot2中从0到点的水平线

问题描述 投票:0回答:1

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

这是迄今为止的代码:

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

或者,我可以使用geom_bar(),但我不确定如何在没有他们总结的情况下展示伦敦和英国。

r ggplot2 visualization
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.