mirror of
https://github.com/johrpan/geposan.git
synced 2025-10-26 10:47:25 +01:00
plots: Replace max rank with percentile lines
This commit is contained in:
parent
8812c9579f
commit
463faf0fbe
2 changed files with 53 additions and 28 deletions
76
R/plots.R
76
R/plots.R
|
|
@ -212,13 +212,11 @@ plot_rankings <- function(rankings, gene_sets) {
|
||||||
#' @param ranking The ranking to visualize.
|
#' @param ranking The ranking to visualize.
|
||||||
#' @param gene_sets A named list of gene sets (containing vectors of gene IDs)
|
#' @param gene_sets A named list of gene sets (containing vectors of gene IDs)
|
||||||
#' that will be highlighted in the plot. The names will be used in the legend.
|
#' that will be highlighted in the plot. The names will be used in the legend.
|
||||||
#' @param max_rank The maximum rank of included genes. All genes that are ranked
|
|
||||||
#' lower will appear greyed out.
|
|
||||||
#'
|
#'
|
||||||
#' @seealso ranking()
|
#' @seealso ranking()
|
||||||
#'
|
#'
|
||||||
#' @export
|
#' @export
|
||||||
plot_scores <- function(ranking, gene_sets = NULL, max_rank = NULL) {
|
plot_scores <- function(ranking, gene_sets = NULL) {
|
||||||
if (!requireNamespace("plotly", quietly = TRUE)) {
|
if (!requireNamespace("plotly", quietly = TRUE)) {
|
||||||
stop("Please install \"plotly\" to use this function.")
|
stop("Please install \"plotly\" to use this function.")
|
||||||
}
|
}
|
||||||
|
|
@ -241,7 +239,21 @@ plot_scores <- function(ranking, gene_sets = NULL, max_rank = NULL) {
|
||||||
title = "Percentile",
|
title = "Percentile",
|
||||||
tickformat = ".0%"
|
tickformat = ".0%"
|
||||||
),
|
),
|
||||||
yaxis = list(title = "Score")
|
yaxis = list(title = "Score"),
|
||||||
|
shapes = list(
|
||||||
|
vline(0.95),
|
||||||
|
vline(0.75),
|
||||||
|
vline(0.50),
|
||||||
|
vline(0.25),
|
||||||
|
vline(0.05)
|
||||||
|
),
|
||||||
|
annotations = list(
|
||||||
|
vlineannotation(0.95),
|
||||||
|
vlineannotation(0.75),
|
||||||
|
vlineannotation(0.50),
|
||||||
|
vlineannotation(0.25),
|
||||||
|
vlineannotation(0.05)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if (length(gene_sets) > 0) {
|
if (length(gene_sets) > 0) {
|
||||||
|
|
@ -280,26 +292,6 @@ plot_scores <- function(ranking, gene_sets = NULL, max_rank = NULL) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!is.null(max_rank)) {
|
|
||||||
first_not_included_rank <- max_rank + 1
|
|
||||||
last_rank <- ranking[, .N]
|
|
||||||
|
|
||||||
if (first_not_included_rank <= last_rank) {
|
|
||||||
plot <- plot |> plotly::layout(
|
|
||||||
shapes = list(
|
|
||||||
type = "rect",
|
|
||||||
fillcolor = "black",
|
|
||||||
opacity = 0.1,
|
|
||||||
x0 = 1 - first_not_included_rank / n_ranks,
|
|
||||||
x1 = 1 - last_rank / n_ranks,
|
|
||||||
y0 = 0.0,
|
|
||||||
y1 = 1.0
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plot
|
plot
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -494,3 +486,39 @@ plot_scores_by_position <- function(ranking,
|
||||||
yaxis = list(title = "Score")
|
yaxis = list(title = "Score")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#' Helper function for creating a vertical line for plotly.
|
||||||
|
#' @noRd
|
||||||
|
vline <- function(x) {
|
||||||
|
list(
|
||||||
|
type = "line",
|
||||||
|
y0 = 0,
|
||||||
|
y1 = 1,
|
||||||
|
yref = "paper",
|
||||||
|
x0 = x,
|
||||||
|
x1 = x,
|
||||||
|
line = list(
|
||||||
|
color = "#00000080",
|
||||||
|
opacity = 0.5,
|
||||||
|
dash = "dot"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#' Helper function for creating annotations for lines created using [vline()].
|
||||||
|
#' @noRd
|
||||||
|
vlineannotation <- function(x) {
|
||||||
|
list(
|
||||||
|
text = glue::glue("{round(x * 100)}%"),
|
||||||
|
showarrow = FALSE,
|
||||||
|
yref = "paper",
|
||||||
|
x = x,
|
||||||
|
y = 1,
|
||||||
|
xanchor = "left",
|
||||||
|
xshift = 4,
|
||||||
|
align = "left",
|
||||||
|
font = list(
|
||||||
|
color = "#00000080"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,16 +4,13 @@
|
||||||
\alias{plot_scores}
|
\alias{plot_scores}
|
||||||
\title{Plot a ranking as a scatter plot of scores.}
|
\title{Plot a ranking as a scatter plot of scores.}
|
||||||
\usage{
|
\usage{
|
||||||
plot_scores(ranking, gene_sets = NULL, max_rank = NULL)
|
plot_scores(ranking, gene_sets = NULL)
|
||||||
}
|
}
|
||||||
\arguments{
|
\arguments{
|
||||||
\item{ranking}{The ranking to visualize.}
|
\item{ranking}{The ranking to visualize.}
|
||||||
|
|
||||||
\item{gene_sets}{A named list of gene sets (containing vectors of gene IDs)
|
\item{gene_sets}{A named list of gene sets (containing vectors of gene IDs)
|
||||||
that will be highlighted in the plot. The names will be used in the legend.}
|
that will be highlighted in the plot. The names will be used in the legend.}
|
||||||
|
|
||||||
\item{max_rank}{The maximum rank of included genes. All genes that are ranked
|
|
||||||
lower will appear greyed out.}
|
|
||||||
}
|
}
|
||||||
\description{
|
\description{
|
||||||
This function requires the package \code{plotly}.
|
This function requires the package \code{plotly}.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue