Plotting the "concordance" of two categorical binomial variables

ggplot2
shiny

#1

Alright, so this might be a little bit abstract (or maybe completely obvious?), but it would be interesting to get an opinion nonetheless.
Questions:

  1. Does it make any sense to plot this?
  2. if question 1 == TRUE, how would I go about it? What am I looking for?

Let's say I have two one-dimensional data frames.

df1 <- data.frame(a = 0, b = 0, c = 1, d = 1)
df2 <- data.frame(a = 0, b = 1, c = 1, d = 0)

In words (since I have no idea how to do this):
I'd like to visualise how each value in df 1matches the values in df2, and vice versa. E.g. if df1["a"] == df2["a"] add something to the plot. If they are unequal, add something else that displays if either df1 or df2 was 1 or 0.

My initial thought was something in the lines of a geom_point() plot using the size argument for matches, but I guess that would just cluster the values at 0 and 1, unless I'm able to somehow set the x and y axes to a, b, c and d?

Thank you!


#2

It's possible to do exactly as you describe, to set the x axes to categorical variables of a, b, c, and d.

library(tidyverse);
library(ggrepel) # handy for placing data labels

df1 <- data.frame(a = 0, b = 0, c = 1, d = 1)
df2 <- data.frame(a = 0, b = 1, c = 1, d = 0)

combo <- 
  rbind(df1, df2) %>%
  rowid_to_column(var = "source") %>%
  # This will put it into a tidy format
  gather(category, value, a:d)

combo %>% 
  # ...but for this particular case it helps to spread by data source
  spread(source, value) %>%
  ggplot(aes(`1`, `2`, label = category)) + 
    geom_point() +
    ggrepel::geom_text_repel()

Rplot