按组和时间绘制缺失值

Plot missing values by group and time

我有一个看起来像这样的数据集:

df <- data.frame("id" = c("Alpha", "Alpha", "Alpha","Alpha","Beta","Beta","Beta","Beta", "Gamma", "Gamma", "Gamma", "Gamma"), 
          "Year" = c(1970,1971,1972,1973,1970,1971,1972,1973,1970,1971,1972,1973), 
                 "Val" = c(2,NA,NA,5,NA,5,NA,5,1,3,4,NA))

我想显示我的数据的面板结构。理想情况下,我想创建一个图来显示按年份排序的每个主题的缺失值。 理想情况下,绘图的 x 轴为 "Year",y 轴为 "id",中间应该有不同颜色的矩形(例如灰色=缺失,蓝色不缺失) .

我尝试使用 library(VIM) matrixplot()library(naniar) gg_miss_fct() 来生成与我正在寻找的相似的视觉效果。 但是:1)我只需要为一个变量而不是整个数据集生成图(而 gg_miss_fctmatrixplot 为所有变量绘制缺失值,2)我希望缺失值出现按照时间标准排序。

在此先感谢您的帮助

ggplot(df, aes(Year, id, fill = is.na(Val))) +
    geom_tile(col = "black") +
    coord_equal()