【问题标题】:How Can I Increase Space Between Bars With ggplot?如何使用 ggplot 增加条形之间的空间?
【发布时间】:2017-11-01 05:14:37
【问题描述】:
ggplot(G, aes(x=State, y=Score, fill=State))+
geom_bar(stat="identity", position="dodge")+ 
scale_y_continuous(labels = scales::comma)

请帮我写得更优雅。

this output + 我想在 x 中使用 236 分的线,试过了 abline(v=236)

没用!

【问题讨论】:

  • 为什么要添加 python 和 excel 标签?据我所知,Excel没有ggplot,你的问题似乎是“我如何在ggplot中做X”。
  • 另外,请不要在人们添加答案后更改问题的目标。 “如何使用 ggplot 增加条形之间的空间?”是一个很好的重点问题。 “如何在 ggplot 中添加一条水平线?”也是一个很好的重点问题。将它们作为单独的问题提出,不要在回答第一个问题后编辑第二个问题。 (另外,也可以先在ggplot2 标签中搜索一下,例如q1q2

标签: r ggplot2


【解决方案1】:

试试这个,它对我有用

barplot(c(1,2,3,4),space=c(1,1,1,1))  # equally spaced bars as expected

barplot(c(1,2,3,4),space=c(1,20,1,1))  # massive gap before the 2nd bar

barplot(c(1,2,3,4),space=c(20,1,1,1))  # the same as the first plot

【讨论】:

    【解决方案2】:

    这是很多酒吧。您可以通过在geom_bar() 中指定它们的width 来使条形变窄(按比例,1 是接触,0.5 是条形和间隙的相等数量,默认为 0.9)。

    ggplot(G, aes(x = State, y = Score, fill = State)) +
      geom_bar(stat = "identity", position = "dodge", width = 0.8) + 
      scale_y_continuous(labels = scales::comma)
    

    另请注意,position = "dodge" 在您的示例中没有做任何事情。

    对于有这么多条形图的图,如果您希望将它们全部标记,我建议在您的图上添加 + coord_flip() - 通常拥有大量垂直空间比拥有大量水平空间更容易,而且长标签不会重叠。当您拥有超过 50 个酒吧时,您将需要相当大的空间。

    【讨论】: