在 R 中,强制 x 轴刻度标记我的 ggplot 中的每个 bin (geom_col)

In R, force x-axis ticks to label each bin in my ggplot (geom_col)

背景

这可能是一个重复的问题,但我已经浏览了几篇文章,但没有找到我正在寻找的确切内容。我有一个很好的 ggplot 我用 geom_col:

它来自 df,看起来像这样:

我用这段代码做到了:

ggplot(data = avg_repeats_per_year, aes(x = year, y = ratio)) +
  geom_col()

您可以看到 ratio 中的每个数字对应于从 2009 年到 2018 年(一年 NA 年)的不同 year

问题

您可以看到每个条形对应 year 中的一年,但实际上在图的 x 轴上只标记了 3 年。

我怎样才能让每个条形图都有对应年份的标签?

我试过的

我做过这样的尝试:

ggplot(data = avg_repeats_per_year, aes(x = year, y = ratio)) +
  geom_col() + 
  scale_x_discrete(breaks = avg_repeats_per_year$year, labels = avg_repeats_per_year$year)

但是没有任何显示。有什么想法吗?

好像是数字列,改成factorcharacter应该可以了

ggplot(data = avg_repeats_per_year, aes(x = factor(year), y = ratio)) +
    geom_col() + 
    scale_x_discrete(labels = avg_repeats_per_year$year) + 
    xlab("year")

-输出

数据

avg_repeats_per_year <- structure(list(year = c(2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 
2015L, 2016L, 2017L, 2018L, NA), ratio = c(2.28, 2.24, 2.3, 2.45, 
2.32, 2.41, 2.56, 2.52, 2.63, 1.32, 0.56)), class = "data.frame", row.names = c(NA, 
-11L))