按组级别划分的直方图和/或条形图

Histograms and/or bar graphs split by group level

提问人:the_special_none 提问时间:6/27/2022 最后编辑:the_special_none 更新时间:6/28/2022 访问量:44

问:

季节 avg_days n_season
阿纳多卢埃菲斯 2013-2014 14天 6
阿纳多卢埃菲斯 2014-2015 14天 6
阿纳多卢埃菲斯 2015-2016 14天 6
阿纳多卢埃菲斯 2016-2017 10天 6
阿纳多卢埃菲斯 2017-2018 11天 6
阿纳多卢埃菲斯 2018-2019 11天 6
巴塞罗那 2013-2014 15天 6
巴塞罗那 2014-2015 14天 6
巴塞罗那 2015-2016 13天 6
巴塞罗那 2016-2017 11天 6
巴塞罗那 2017-2018 12天 6
巴塞罗那 2018-2019 11天 6

你好

我有一个像上面报告的数据框,我想创建一个带有 ggplot2 的图表(直方图或图表条),显示每个团队(6 支球队)在赛季中的avg_days趋势。我面临的困难主要有两个:为每支球队创建一个图表,并绘制两个离散变量(x 轴上的季节和 y 轴上的avg_days)。

感谢您的帮助!

r ggplot2

评论

2赞 Rui Barradas 6/27/2022
图像不是发布数据(或代码)的好方法。请参阅此 Meta相关的 xkcd。你能以格式发布样本数据吗?请使用您尝试的代码和 .或者,如果它太大,输出为 。(注意:是数据集的名称。dputdput(df)dput(head(df, 20))df
0赞 the_special_none 6/28/2022
是的,对不起,布局不好。

答:

1赞 Rui Barradas 6/28/2022 #1

要通过使用正则表达式保持数字来绘制,请强制为整数,然后通过管道传输到 .发布的数据集只有两个团队,所以我用 .另一种选择是facet_gridavg_daysseasonavg_daysggplotfacet_wrap

x <- "home  season  avg_days    n_season
'Anadolu Efes'  2013-2014   '14 days'   6
'Anadolu Efes'  2014-2015   '14 days'   6
'Anadolu Efes'  2015-2016   '14 days'   6
'Anadolu Efes'  2016-2017   '10 days'   6
'Anadolu Efes'  2017-2018   '11 days'   6
'Anadolu Efes'  2018-2019   '11 days'   6
Barcelona   2013-2014   '15 days'   6
Barcelona   2014-2015   '14 days'   6
Barcelona   2015-2016   '13 days'   6
Barcelona   2016-2017   '11 days'   6
Barcelona   2017-2018   '12 days'   6
Barcelona   2018-2019   '11 days'   6
"
df1 <- read.table(textConnection(x), header = TRUE)

suppressPackageStartupMessages({
  library(dplyr)
  library(ggplot2)
})

df1 %>%
  mutate(avg_days = sub("(^\\d+).*$", "\\1", avg_days),
         avg_days = as.integer(avg_days)) %>%
  ggplot(aes(season, avg_days)) +
  geom_col() +
  facet_wrap(~ home) +
  theme_bw() +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

创建于 2022-06-27 由 reprex 包 (v2.0.1)