【问题标题】:How can I make Grouped Bar Plots in R?如何在 R 中制作分组条形图?
【发布时间】:2020-06-11 18:33:28
【问题描述】:

     City
             2018-2019
                      2019-2020
                                2020-Present
1   Amritsar    0.0365  0.0205  0.0284
2   Jalandhar   0.0034  0.0031  0.0020
3   Ludhiana    0.0238  0.0235  0.0151
4   Moga        0.0105  0.0038  0.0202
5   Pathankot   0.0157  0.0013  0.0070
6   Phagwara    0.0100  0.0100  0.0114

我需要编写一个分组条形图,使城市名称位于水平轴上,对于每个城市,我可以看到三个条形图对应于三年中每年的拒绝率。

了解如何在 R 中编写代码对我很有帮助。

【问题讨论】:

  • 欢迎来到本站!这看起来像是一个重复的问题,所以看看this 看看这是否适合你
  • 它几乎肯定是重复的,搜索[r] grouped bar plot 有很多例子。 Ananya,搜索相关问题可能很困难,但在提出问题之前可以节省大量时间。添加[r] 文字(r 周围的括号)有助于 SO,因为它强制使用 R 编程语言标签,从而显着缩小搜索范围。
  • 我认为你将遇到的最困难的时候是列名不应该以 R 中的数字开头,所以你必须修复尝试时发生的自动更改导入数据。
  • 这能回答你的问题吗? stacked bars within grouped bar chart

标签: r bar-chart data-visualization


【解决方案1】:

如果您是从 Excel 导入,这会变得非常简单(这就是屏幕截图的样子?)。只需使用 readxl 包,它会适当地命名列。

library(readxl)
data <- readxl::read_xlsx("data.xlsx")
data
## A tibble: 6 x 4
#  City      `2018-2019` `2019-2020` `2020-Present`
#  <chr>           <dbl>       <dbl>          <dbl>
#1 Amritsar       0.0365      0.0205         0.0284
#2 Jalandhar      0.0034      0.0031         0.002 
#3 Ludhiana       0.0238      0.0235         0.0151
#4 Moga           0.0105      0.0038         0.0202
#5 Pathankot      0.0157      0.0013         0.007 
#6 Phagwara       0.01        0.01           0.0114

现在我们需要将数据加长,以便ggplot 绘制:

library(dplyr)
library(tidyr)
data %>%
  pivot_longer(-City, names_to = "Period", values_to = "Value")
## A tibble: 18 x 3
#   City      Period        Value
#   <chr>     <chr>         <dbl>
# 1 Amritsar  2018-2019    0.0365
# 2 Amritsar  2019-2020    0.0205
# 3 Amritsar  2020-Present 0.0284
#...
#16 Phagwara  2018-2019    0.01  
#17 Phagwara  2019-2020    0.01  
#18 Phagwara  2020-Present 0.0114

然后我们可以使用ggplotaes 函数告诉ggplot 用于图形的什么属性。我们可以告诉它将City 放在x 轴上,Value 放在y 轴上,并根据Period 更改条形fillgeom_bar 告诉 ggplot 我们想要一个条形图。 position = "dodge" 表示我们想要分组条形。 stat = "identity" 表示我们不希望对数据进行任何转换。这些论点是您必须查找的内容,直到您更有经验为止。

library(ggplot2)
data %>%
  pivot_longer(-City, names_to = "Period", values_to = "Value") #%>%
ggplot(aes(x = City, y = Value, fill = Period)) +
  geom_bar(stat = "identity", position = "dodge") + 
  labs(y = "Rejection Rate")

【讨论】:

    猜你喜欢
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多