Вот вариант ggplot2
.
Сначала измените ваши данные с широкого на длинный и замените ǸA
на 0
s (или любое другое значение).
df1_long <- tidyr::gather(replace(df1, is.na(df1), 0), key, value, -Col1)
Сейчас сюжет
library(ggplot)
ggplot(df1_long, aes(Col1, key, fill = factor(value))) +
geom_tile() +
scale_x_discrete(expand = c(0, 0)) +
scale_y_discrete(expand = c(0, 0)) +
scale_fill_manual(values = c(`0` = "black",
`1` = "grey80"),
labels = c("Missing", "Observed")) +
labs(title = "Your Title",
fill = NULL,
x = NULL,
y = NULL) +
coord_equal() +
theme(legend.position = "bottom")
данные
df1 <- structure(list(Col1 = c("A", "B", "C", "D"), Var1 = c(1L, NA,
1L, 1L), Var2 = c(NA, 1L, NA, 1L)), .Names = c("Col1", "Var1",
"Var2"), class = "data.frame", row.names = c(NA, -4L))