Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----libraries----------------------------------------------------------------
library(funkyheatmap)
library(dplyr)
library(tibble)
## ----summary-data-------------------------------------------------------------
data("scib_summary")
glimpse(scib_summary)
## ----summary-prep-------------------------------------------------------------
# A small helper function for creating rank labels for each column.
# It takes a scores, ranks them and returns a character vector with labels for
# the top 3 scores. Any additional arguments are passed to the `rank()`
# function.
label_top_3 <- function(scores, ...) {
ranks <- rank(scores, ...)
ifelse(ranks <= 3, as.character(ranks), "")
}
scib_summary_plot <- scib_summary |>
# Create an ID column showing the final rank
mutate(id = as.character(seq_len(nrow(scib_summary)))) |>
# Set the labels for the scaling and features columns
mutate(
scaling = factor(
scaling,
levels = c("Unscaled", "Scaled"),
labels = c("-", "+")
),
features = factor(
features,
levels = c("Full", "HVG"),
labels = c("FULL", "HVG")
)
) |>
# Create a column with paths to output images
mutate(
output_img = case_match(
output,
"Features" ~ "images/matrix.png",
"Embedding" ~ "images/embedding.png",
"Graph" ~ "images/graph.png"
)
) |>
# Create rank labels
mutate(
label_pancreas = label_top_3(rank_pancreas),
label_lung_atlas = label_top_3(rank_lung_atlas),
label_immune_cell_hum = label_top_3(rank_immune_cell_hum),
label_immune_cell_hum_mou = label_top_3(rank_immune_cell_hum_mou),
label_mouse_brain = label_top_3(rank_mouse_brain),
label_simulations_1_1 = label_top_3(rank_simulations_1_1),
label_simulations_2 = label_top_3(rank_simulations_2),
package_label = label_top_3(package_rank, ties.method = "min"),
paper_label = label_top_3(paper_rank, ties.method = "min"),
time_label = label_top_3(time_rank, ties.method = "min"),
memory_label = label_top_3(memory_rank, ties.method = "min")
) |>
# scale rank columns between [0, 1] because `scale_column` is set to FALSE.
mutate_at(
c("rank_pancreas", "rank_lung_atlas", "rank_immune_cell_hum", "rank_immune_cell_hum_mou", "rank_mouse_brain", "rank_simulations_1_1", "rank_simulations_2", "package_rank", "paper_rank", "time_rank", "memory_rank"),
function(x) {
scale_minmax(-x)
}
) |>
as.data.frame()
glimpse(scib_summary_plot)
## ----summary-cols-------------------------------------------------------------
column_info <- tribble( # tribble_start
~id, ~id_color, ~name, ~geom, ~group, ~options,
"id", NA, "Rank", "text", "Method", list(hjust = 0),
"method", NA, "Method", "text", "Method", list(hjust = 0, width = 5),
"output_img", NA, "Output", "image", "Method", list(),
"features", "features", "Features", "text", "Method", list(palette = "features", width = 2),
"scaling", NA, "Scaling", "text", "Method", list(fontface = "bold"),
"overall_pancreas", "rank_pancreas", "Pancreas", "bar", "RNA", list(palette = "blues", width = 1.5, draw_outline = FALSE),
"label_pancreas", NA, NA, "text", "RNA", list(hjust = .1, overlay = TRUE),
"overall_lung_atlas", "rank_lung_atlas", "Lung", "bar", "RNA", list(palette = "blues", width = 1.5, draw_outline = FALSE),
"label_lung_atlas", NA, NA, "text", "RNA", list(hjust = .1, overlay = TRUE),
"overall_immune_cell_hum", "rank_immune_cell_hum", "Immune (human)", "bar", "RNA", list(palette = "blues", width = 1.5, draw_outline = FALSE),
"label_immune_cell_hum", NA, NA, "text", "RNA", list(hjust = .1, overlay = TRUE),
"overall_immune_cell_hum_mou", "rank_immune_cell_hum_mou", "Immune (human/mouse)", "bar", "RNA", list(palette = "blues", width = 1.5, draw_outline = FALSE),
"label_immune_cell_hum_mou", NA, NA, "text", "RNA", list(hjust = .1, overlay = TRUE),
"overall_mouse_brain", "rank_mouse_brain", "Mouse brain", "bar", "RNA", list(palette = "blues", width = 1.5, draw_outline = FALSE),
"label_mouse_brain", NA, NA, "text", "RNA", list(hjust = .1, overlay = TRUE),
"overall_simulations_1_1", "rank_simulations_1_1", "Sim 1", "bar", "Simulations", list(palette = "greens", width = 1.5, draw_outline = FALSE),
"label_simulations_1_1", NA, NA, "text", "Simulations", list(hjust = .1, overlay = TRUE),
"overall_simulations_2", "rank_simulations_2", "Sim 2", "bar", "Simulations", list(palette = "greens", width = 1.5, draw_outline = FALSE),
"label_simulations_2", NA, NA, "text", "Simulations", list(hjust = .1, overlay = TRUE),
"package_score", "package_rank", "Package", "bar", "Usability", list(palette = "oranges", width = 1.5, draw_outline = FALSE),
"package_label", NA, NA, "text", "Usability", list(hjust = .1, overlay = TRUE),
"paper_score", "paper_rank", "Paper", "bar", "Usability", list(palette = "oranges", width = 1.5, draw_outline = FALSE),
"paper_label", NA, NA, "text", "Usability", list(hjust = .1, overlay = TRUE),
"time_score", "time_rank", "Time", "bar", "Scalability", list(palette = "greys", width = 1.5, draw_outline = FALSE),
"time_label", NA, NA, "text", "Scalability", list(hjust = .1, overlay = TRUE),
"memory_score", "memory_rank", "Memory", "bar", "Scalability", list(palette = "greys", width = 1.5, draw_outline = FALSE),
"memory_label", NA, NA, "text", "Scalability", list(hjust = .1, overlay = TRUE)
) # tribble_end
column_info
## ----summary-col-groups-------------------------------------------------------
column_groups <- tribble(
~group, ~palette, ~level1,
"Method", "black", "Method",
"RNA", "blues", "RNA",
"Simulations", "greens", "Simulations",
"Usability", "oranges", "Usability",
"Scalability", "greys", "Scalability",
)
column_groups
## ----summary-rows-------------------------------------------------------------
row_info <- data.frame(id = scib_summary_plot$id, group = NA_character_)
row_info
## ----summary-palettes---------------------------------------------------------
palettes <- list(
features = c(FULL = "#4c4c4c", HVG = "#006300"),
blues = "Blues",
greens = "Greens",
oranges = rev(RColorBrewer::brewer.pal(9, "Oranges")),
greys = "Greys",
black = c("black", "black")
)
## ----legends------------------------------------------------------------------
legends <- list(
list(
title = "Scaling",
geom = "text",
values = c("Scaled", "Unscaled"),
labels = c("+", "-"),
label_width = .5
),
list(
title = "RNA rank",
palette = "blues",
geom = "rect",
labels = c("20", " ", "10", " ", "1"),
size = c(1, 1, 1, 1, 1)
),
list(
title = "Simulations rank",
palette = "greens",
geom = "rect",
labels = c("20", " ", "10", " ", "1"),
size = c(1, 1, 1, 1, 1)
),
list(
title = "Usability rank",
palette = "oranges",
geom = "rect",
labels = c("20", " ", "10", " ", "1"),
size = c(1, 1, 1, 1, 1)
),
list(
title = "Scalability rank",
palette = "greys",
geom = "rect",
labels = c("20", " ", "10", " ", "1"),
size = c(1, 1, 1, 1, 1)
)
)
## ----summary-figure, fig.width=8, fig.height=8--------------------------------
funky_heatmap(
data = scib_summary_plot,
column_info = column_info,
column_groups = column_groups,
row_info = row_info,
palettes = palettes,
legends = legends,
position_args = position_arguments(
col_annot_offset = 4
),
scale_column = FALSE
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.