gorkang / BayesianReasoning

R package with functions to plot and help understand Positive and Negative Predictive Values, and their relationship with Sensitivity, Specificity and Prevalence.
https://gorkang.shinyapps.io/BayesianReasoning/
8 stars 1 forks source link

Contingency table as overlay? #52

Open gorkang opened 2 years ago

gorkang commented 2 years ago

library(BayesianReasoning)
library(ggplot2)
library(dplyr)
library(patchwork)

p1 = BayesianReasoning::PPV_heatmap(
  min_Prevalence = 1, max_Prevalence = 1000,
  Sensitivity = 90, limits_Specificity = c(90, 100),
  overlay = "area",
  overlay_prevalence_1 = 1, overlay_prevalence_2 = 100,
  overlay_position_FP = 2, overlay_extra_info = TRUE)

counts <- c(1.98, 97.02, 0.9, 0.1)
color_fill <- c("#453781ff", "#238a8dff", "#238a8dff", "#453781ff")
gender <- gl(n = 2, k = 1, length = 4, labels = c("+", "-"))
interest <- gl(n = 2, k = 2, length = 4, labels = c("Healthy", "Sick"))
survey_data <- data.frame(counts, gender, interest, color_fill)

p2 = ggplot(data = survey_data, aes(x = interest, y = gender)) +
  geom_tile(aes(fill = color_fill)) +
  geom_text(aes(label = counts), color = "black", size = 5) +
  scale_x_discrete(expand = c(0,0)) +
  scale_y_discrete(expand = c(0,0)) +
  scale_fill_identity() +
  theme_minimal(base_size = 14) + 
  coord_fixed(ratio = 1) +
  labs(x = "", y = "") +
  theme(legend.position = "none",
        # plot.background = element_rect(fill = 'white', colour = 'black'),
        plot.margin=grid::unit(c(0,0,0,0), "mm"),
        axis.text.x = element_text(colour = "black"),
        axis.text.y = element_text(colour = "black")
  )

p1 + inset_element(p2, left = 0.8, bottom = 0, right = 1, top = .2, clip = TRUE)

Rplot01

gorkang commented 10 months ago

See new plot_cutoff() for an example on how to do this.