dat <- data.frame(
perc = c(54, 18, 5, 15),
wall_policy = c("oppose", "favor", "oppose", "favor"),
dreamer_policy = c("favor", "favor", "oppose", "oppose"),
stringsAsFactors = FALSE
) %>%
transform(
xmin = ifelse(wall_policy == "oppose", -sqrt(perc), 0),
xmax = ifelse(wall_policy == "favor", sqrt(perc), 0),
ymin = ifelse(dreamer_policy == "oppose", -sqrt(perc), 0),
ymax = ifelse(dreamer_policy == "favor", sqrt(perc), 0)
)
ggplot(data = dat) +
geom_rect(aes(
xmin = xmin, xmax = xmax,
ymin = ymin, ymax = ymax
), fill = "grey") +
geom_text(aes(
x = xmin + 0.5 * sqrt(perc),
y = ymin + 0.5 * sqrt(perc),
label = perc
),
color = "white", size = 10
) +
coord_equal() +
geom_hline(yintercept = 0) +
geom_vline(xintercept = 0) +
theme_minimal() +
labs(x = "", y = "", title = "")