【问题标题】:Flip ggplot y-axis for bar graph?为条形图翻转ggplot y轴?
【发布时间】:2021-08-17 18:32:33
【问题描述】:

我正在尝试创建一个绘制排名的条形图,其中较低的值更好。我希望较大的条形对应于较小的值,因此数据中的“最佳”组会获得更多的视觉权重。

代表:

dat = data.frame("Group" = c(rep("Best",50),
                             rep("Middle",50),
                             rep("Worst",50)
                             ),
                 "Rank" = c(rnorm(n = 50, mean = 1.5, sd = 0.5),
                            rnorm(n = 50, mean = 2.5, sd = 0.5),
                            rnorm(n = 50, mean = 3.5, sd = 0.5)
                            )
                 )

    tibdat = as_tibble(dat) %>%
      group_by(Group) %>%
      summarise(Mean_Rank = mean(Rank,na.rm=T))

# creates simple rightside up bar graph
  
    ggplot(data = tibdat, mapping = aes(Group, Mean_Rank, fill = Group)) +
      geom_col() +
      scale_y_continuous(breaks = c(1:4), limits = c(1,4),  oob = scales::squish)

# my attempt below, simply reversing the breaks and limits
    
    ggplot(data = tibdat, mapping = aes(Group, Mean_Rank, fill = Group)) +
      geom_col() +
      scale_y_continuous(breaks = c(4:1), limits = c(4,1),  oob = scales::squish)

最后的图形代码确实成功翻转了轴,但是数据消失了(没有绘制条形图)。

请注意,我确实希望图表源自顶部,这 scale_y_reverse 可以实现。我希望这些条从底部开始,位于 y = 4 行(或以下)。

这是如何实现的?

编辑:在下面添加了图片以显示有效但错误的原始条形图。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    我刚刚转换了标签。不知道你搜的是不是这个。

    ggplot(data = tibdat, mapping = aes(Group, Mean_Rank, fill = Group)) +
      geom_col() +
      scale_y_continuous(breaks = c(1:4), limits = c(1,4), oob = scales::squish, labels = function(x) 5 - x)
    

    使用 aes 参数中的另一个技巧,我认为您可以达到想要的结果。也许比我更好的人知道一种干净的方法。

    ggplot(data = tibdat, mapping = aes(Group, 5 - Mean_Rank, fill = Group)) +
    geom_col() +
    scale_y_continuous(breaks = c(1:4), limits = c(1,4),  oob = scales::squish, labels = function(x) 5 - x)
    

    结果如下:

    【讨论】:

    • 这仍然使最差组具有最大的条。我试图使最佳组的栏最大,从 4(底部)到 1.5(靠近顶部)。 Worst bar 应该是最小的,从 4 到 3.5。
    • 哦,好吧,我误解了一点。您可以在 aes 中使用 5 - Mean_Rank。我知道这是一种愚蠢的把戏,但它似乎奏效了。我编辑我的答案。让我知道您是否搜索过。
    • 是的,这确实有效,将达到我的目的,感谢您的帮助!然而,改变数据本身而不是轴/图表细节确实让我感到不安。
    猜你喜欢
    • 2019-07-21
    • 1970-01-01
    • 2021-03-06
    • 2017-12-07
    • 2015-10-06
    • 2021-02-13
    • 1970-01-01
    • 2014-07-07
    • 2017-12-24
    相关资源
    最近更新 更多