-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdynplot_onedim.R
68 lines (61 loc) · 2.34 KB
/
dynplot_onedim.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
#' Plot a trajectory as a graph
#'
#' @inheritParams dynplot
#'
#' @return A ggplot2 object, with the processed data in `plot$data` and `attr(plot$data, "data")`.
#'
#' @seealso [dynplot_dendro()], [dynplot_dimred()], [dynplot_graph()] or [dynplot_onedim()]
#'
#' @export
#' @examples
#' library(ggplot2)
#' data(example_bifurcating)
#' dataset <- example_bifurcating
#'
#' dynplot_onedim(dataset, equal_cell_width = TRUE, margin = 0.05) +
#' geom_trajectory_segments() +
#' geom_trajectory_connection() +
#' geom_cell_point(aes(colour = select_feature_expression("G2", d = .data))) +
#' scale_expression_colour() +
#' new_scale_colour() +
#' geom_milestone_label(aes(y = -0.1, hjust = as.integer(type == "end")))
#'
#' dynplot_onedim(dataset, equal_cell_width = TRUE, margin = 0.05) +
#' geom_trajectory_segments(aes(color = milestone_percentages), size = 1, color = "#333333") +
#' geom_trajectory_connection() +
#' scale_milestones_colour() +
#' new_scale_colour() +
#' geom_cell_point(aes(colour = select_feature_expression("G2", d = .data))) +
#' scale_expression_colour() +
#' new_scale_colour() +
#' geom_milestone_label(aes(y = -0.1, fill = milestone_id, hjust = as.integer(type == "end"))) +
#' scale_milestones_fill()
dynplot_onedim <- function(dataset, trajectory = dataset, margin = 0.02, equal_cell_width = TRUE) {
assert_that(dynwrap::is_wrapper_with_trajectory(dataset))
# reorder
dataset$milestone_network <- optimize_order(dataset$milestone_network)
# linearise
linearised <- linearise_trajectory(
dataset,
margin = margin,
equal_cell_width = equal_cell_width
)
# calculate positions of connections
connection_positions <- calculate_connections(linearised) %>% rename_dimred_xy()
segments <- calculate_segments_from_edges(linearised$edge_positions)
segment_progressions <- segments$segment_progressions %>% rename_dimred_xy()
segment_positions <- segments$segment_positions %>% rename_dimred_xy()
layout <- lst(
cell_positions = linearised$cell_positions %>% rename_dimred_xy(),
milestone_positions = linearised$milestone_positions %>% rename_dimred_xy(),
edge_positions = linearised$edge_positions %>% rename_dimred_xy(),
segment_progressions,
segment_positions,
connection_positions
)
dynplot(
dataset = dataset,
trajectory = trajectory,
layout = layout
)
}