diff --git a/R/plots.R b/R/plots.R
index a253628..e437997 100644
--- a/R/plots.R
+++ b/R/plots.R
@@ -15,20 +15,38 @@ overview_plot <- function(ranked_data,
nrow(ranked_data),
sample_proportion * nrow(ranked_data)
)],
- x = ~rank,
+ x = ~percentile,
y = ~score,
hoverinfo = "skip"
) |>
plotly::layout(
- xaxis = list(title = "Ranks"),
- yaxis = list(title = "Score")
+ xaxis = list(
+ title = "Percentile",
+ autorange = "reversed",
+ tickformat = ".1%"
+ ),
+ 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(highlighted_genes) > 0) {
figure <- figure |>
plotly::add_markers(
data = ranked_data[gene %chin% highlighted_genes],
- x = ~rank,
+ x = ~percentile,
y = ~score,
text = ~ glue::glue(
"{hgnc_name}
",
@@ -121,3 +139,39 @@ scores_plot <- function(ranked_data, highlighted_genes = NULL, ranks = 1000) {
dragmode = "select"
)
}
+
+#' 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"
+ )
+ )
+}