-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathplot_coverage.R
69 lines (63 loc) · 1.85 KB
/
plot_coverage.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#------------------------------------------------
#' Plot coverage
#'
#' Create a bar chart visualizing the average coverage across a given grouping
#' variable. The color of each bar represents the magnitude of the mean
#' coverage.
#'
#' @param data A data frame, data frame extension (e.g. a tibble), or a lazy
#' data frame (e.g. from dbplyr or dtplyr).
#' @param group_by The grouping variable. The average coverage is computed for
#' each unique value of the variable.
#'
#' @return A [ggplot2][ggplot2::ggplot2-package] object.
#'
#' @export
#' @examples
#' # Read example data
#' data <- read_tbl_coverage(miplicorn_example("coverage_AA_table.csv"))
#'
#' # Plot coverage grouped by gene
#' plot_coverage(data, gene)
#' @export
plot_coverage <- function(data, group_by) {
UseMethod("plot_coverage")
}
#' @export
plot_coverage.default <- function(data, group_by) {
cli_abort(c(
"Cannot plot the coverage with this data object.",
"i" = "Object must be a coverage table or a reference, alternate, coverage table."
))
}
# Plotting function
plot_coverage_fn <- function(data, group_by) {
# Ensure inputs exist
rlang::check_required(data)
rlang::check_required(group_by)
# Group and create stats
plot_data <- data %>%
dplyr::group_by({{ group_by }}) %>%
dplyr::summarise(mean_coverage = mean(.data$coverage, na.rm = TRUE))
# Plot
ggplot2::ggplot(
data = plot_data,
mapping = ggplot2::aes(
x = {{ group_by }},
y = .data$mean_coverage,
fill = .data$mean_coverage
)
) +
ggplot2::geom_col() +
default_theme() +
ggplot2::theme(
axis.text.x = ggplot2::element_text(angle = 90, vjust = 0.5, hjust = 1),
legend.position = "none"
)
}
#' @rdname plot_coverage
#' @export
plot_coverage.cov_tbl <- plot_coverage_fn
#' @rdname plot_coverage
#' @export
plot_coverage.ref_alt_cov_tbl <- plot_coverage_fn