library(ggplot2)
library(tidyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readr)
df <- read_csv("unmet needs by visibility.csv")
## New names:
## Rows: 20 Columns: 4
## ── Column specification
## ──────────────────────────────────────────────────────── Delimiter: "," chr
## (1): ...1 dbl (3): Invisible, Semi-Visible, Visible
## ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
## Specify the column types or set `show_col_types = FALSE` to quiet this message.
## • `` -> `...1`
colnames(df)[1] <- "Category"

df_long <- df %>%
  pivot_longer(cols = -Category,
               names_to = "Visibility",
               values_to = "Count")

df_long <- df_long %>%
  group_by(Category) %>%
  mutate(Total = sum(Count)) %>%
  ungroup() %>%
  mutate(Category = reorder(Category, -Total))
ggplot(df_long, aes(x = Category, y = Count, fill = Visibility,)) +
  geom_bar(stat = "identity", width = 0.7) +
  labs(
    title = "Unmet Needs by Visibility",
    subtitle = "Unmet academic accommodation need by disability visibility.",
    caption = "Source: Christ, B. R., Malhotra, B., Chapman, O., Ertman, B., & Perrin, P. B. (2026). Visibility data. PLOS ONE.",
    x = "Unmet Need",
    y = "",
    fill = "Disibility Visibility"
  ) +
  scale_fill_brewer(palette = "Dark2") +
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 12, hjust = 0),
    plot.subtitle = element_text(size = 10, margin = margin(b = 10)),
    plot.caption = element_text(size = 5, color = "gray40", hjust = 0),
    
    axis.title.x = element_text(size = 10, face = "bold"),
    axis.title.y = element_text(size = 10, face = "bold"),
    
    axis.text.x = element_text(size = 6, color = "black", angle = 40, hjust = 1),
    
    legend.position = "right",
    legend.title = element_text(size = 10, face = "bold"),
    
    panel.grid.major.x = element_blank(),
    panel.grid.minor = element_blank()
  )

Original table
Original table

My figure would be a better way to present this table information for a presentation

library(corrplot)
## corrplot 0.95 loaded
library(RColorBrewer)
cor_data <- read.csv("matrix.csv", row.names = 1, header = TRUE)
matrix <- as.matrix(cor_data)
corrplot(matrix, method = "circle", order="FPC", diag = FALSE, tl.col="black", tl.srt=45, col=brewer.pal(n=8, name="PuOr"), title = "Bivariate correlation matrix among primary study variables", mar = c(0, 0, 1, 0), cex.main = 1 )

Original table
Original table

This table could be used next to my figure in a presentation or publication for easier visualization