【问题标题】:R Adjusting space between bars after coord_flip() in ggplotR在ggplot中的coord_flip()之后调整条之间的空间
【发布时间】:2021-03-24 06:45:17
【问题描述】:

我用ggplot 创建了一个图表。

我已经设置了每个条的宽度,但我还想将条之间的间距设置为某个值(例如,我想将红色标记的间距减小到 0.1)?我知道有诸如 position_dodge 之类的选项,但这似乎无法与 coord_flip() 结合使用。

this 相关帖子中建议使用主题(aspect.ratio = .2),但这不允许额外设置条的特定宽度。

有什么建议可以实现这一点吗?

代码:

library(ggplot2)

set.seed(0)
numbers <- runif(5, 0, 10)
names <- LETTERS[seq(1, 5)]
df <- cbind.data.frame(names, numbers)

ggplot(data = df, aes(x = names, y = numbers)) +
  geom_bar(stat = "identity", fill = "blue", width = 0.30) +
  coord_flip()

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    我认为解决方案是结合

    • geom_bar()width 参数(填充为条形保留的空间)
    • theme()aspect ratio 参数,它垂直挤压绘图,导致“小”条。

    使用以下代码:

    library(ggplot2)
        ## your data
        set.seed(0)
        numbers <- runif(5, 0, 10)
        names <- LETTERS[seq(1, 5)]
        df <- cbind.data.frame(names, numbers)       ## corrected args
        
        ggplot(data = df, aes(x = names, y = numbers)) + 
          geom_bar(stat="identity", 
                   fill = "blue", 
                   width=0.9) +            ### increased
          theme(aspect.ratio = .2) +       ### aspect ratio added
          coord_flip()
    

    您会得到以下图表:

    【讨论】:

    • 从我的角度来看,theme(aspect.ratio) 缩放了整个图表。因此,通过调整条形的宽度,似乎可以在这个特定的图表中获得合理的拟合。但是如果有很多图表,如果可以将宽度设置为某个值,同时可以将条形之间的距离设置为某个值,而不使用比例因子,那就太好了。
    • 一方面,我想我明白你在说什么。另一方面,我不认为 geom_bar 设置为以这种方式工作。 geom_bar 中的 width 的文档表明这些“东西”已经以“相对”的方式设置:条形宽度。默认情况下,设置为数据分辨率的 90%。。如果事物是​​以相对方式定义的,那么你怎么能以绝对格式强制它们呢?我不想是对的,我只是认为这是ggplot2中的唯一方法。当然,我可能错了:-)
    • OP,当您有“许多图表”时,您是指使用构面还是只是...制作许多图表?在您的示例中,您只显示了一个图,并且此解决方案似乎可以解决该问题。
    【解决方案2】:

    我个人更喜欢使用ggstance 包以避免与coord_flip 混淆。你需要切换你的 x 和 y

    library(ggplot2)
    library(ggstance)
    
    ggplot(df, aes(x = numbers, y = names)) +
      geom_colh(fill = "blue", width = 0.9)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 2016-04-06
      • 2016-03-17
      • 1970-01-01
      相关资源
      最近更新 更多