This will take you very close
library(tidyverse)
sample_df <- data.frame(
position = c(24175527L, 24179406L, 24190977L, 24231758L, 24233489L,
24233909L, 31011515L, 31028176L, 31029290L, 31033137L,
31038728L, 31138589L, 31218515L, 31227699L, 31237762L, 31244405L,
31290566L, 31385324L, 31422419L, 31442307L, 31868578L, 31879397L,
31911466L, 31911845L, 31919659L, 31976319L, 31978675L, 32020257L,
32107294L, 32110438L, 32186858L, 32211661L, 32218886L, 32227081L,
32230762L, 32257621L, 32259471L, 32278235L, 32290801L,
32293091L, 32303015L, 32317364L, 32380996L, 32384863L, 32400177L,
32439812L, 32450026L, 32454346L, 32561619L, 32563263L, 32575661L,
32580914L, 32609944L, 32698919L, 32808805L, 32887091L, 32890041L,
32909341L, 32943611L, 33004667L, 33025319L, 33026756L),
A = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L),
B = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L),
C = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 0L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L)
)
sample_df %>%
gather(variable, value, A:C) %>%
ggplot(aes(x = as.factor(position),
y = reorder(variable, desc(variable)),
fill = factor(value, levels = c(2, 1, 0)))
) +
geom_tile() +
theme_minimal() +
theme(axis.text.x = element_text(angle=90, hjust=1, vjust=1),
axis.title = element_blank(),
legend.title = element_blank())

Created on 2019-11-24 by the reprex package (v0.3.0.9000)