-
Notifications
You must be signed in to change notification settings - Fork 114
Closed
Description
I've not been able to isolate why this is happening into a simpler reprex, but when I add start_cap and end_cap to the second graph below, lines unexpectedly appear going to 0,0.
library(tidyverse)
library(tidygraph)
#>
#> Attaching package: 'tidygraph'
#> The following object is masked from 'package:stats':
#>
#> filter
library(ggraph)
compartment_names <-
c("XXXc", "XXXp1", "XXXp2", "XXXelim",
"YYYc", "YYYp", "YYYelim",
"ZZZprol", "ZZZt1", "ZZZt2", "ZZZt3", "ZZZblood", "ZZZelim")
pos_x <- pos_y <- list()
pos_x$XXXc <- 1
pos_x$XXXp1 <- pos_x$XXXc - 1
pos_x$XXXp2 <- pos_x$XXXp1
pos_x$XXXelim <- pos_x$XXXc
pos_y$XXXc <- 1
pos_y$XXXp1 <- pos_y$XXXc + 0.5
pos_y$XXXp2 <- pos_y$XXXp1 - 1
pos_y$XXXelim <- pos_y$XXXc - 0.5
pos_x$YYYc <- pos_x$XXXc + 2
pos_x$YYYp <- pos_x$YYYc + 1
pos_x$YYYelim <- pos_x$YYYc
pos_y$YYYc <- pos_y$XXXc
pos_y$YYYp <- pos_y$YYYc
pos_y$YYYelim <- pos_y$YYYc - 0.5
pos_x$ZZZprol <- pos_x$XXXc
pos_x$ZZZt1 <- pos_x$ZZZprol + 1
pos_x$ZZZt2 <- pos_x$ZZZt1 + 1
pos_x$ZZZt3 <- pos_x$ZZZt2 + 1
pos_x$ZZZblood <- pos_x$ZZZt3
pos_x$ZZZelim <- pos_x$ZZZblood + 1
pos_y$ZZZprol <- pos_y$XXXc + 1
pos_y$ZZZt1 <- pos_y$ZZZprol
pos_y$ZZZt2 <- pos_y$ZZZprol
pos_y$ZZZt3 <- pos_y$ZZZprol
pos_y$ZZZblood <- pos_y$ZZZprol + 1
pos_y$ZZZelim <- pos_y$ZZZblood
nodes <-
data_frame(label=compartment_names,
pos_x=unlist(pos_x[label]),
pos_y=unlist(pos_y[label])) %>%
rowid_to_column("id")
schema <-
create_empty(n=0, directed=TRUE) %>%
bind_nodes(nodes) %>%
bind_edges(
tribble(
~from_label, ~to_label, ~edge_label, ~loop_label, ~direction,
"XXXc", "XXXelim", "K10", "` `", 0,
"XXXc", "XXXp1", "K12", "` `", 1,
"XXXp1", "XXXc", "K21", "` `", 1,
"XXXc", "XXXp2", "K13", "` `", 1,
"XXXp2", "XXXc", "K31", "` `", 1,
"XXXc", "YYYc", "mylabel", "` `", 0,
"YYYc", "YYYelim", "K40", "` `", 0,
"YYYc", "YYYp", "K46", "` `", 1,
"YYYp", "YYYc", "K64", "` `", 1,
"XXXc", "ZZZprol", "ZZZ[regen]", "` `", 0,
"YYYc", "ZZZprol", "ZZZ[regen]", "` `", 0,
"ZZZprol", "ZZZprol", "` `", "ZZZ[regen]", 1,
"ZZZprol", "ZZZt1", "K[`tr,ZZZ`]", "` `", 0,
"ZZZt1", "ZZZt2", "K[`tr,ZZZ`]", "` `", 0,
"ZZZt2", "ZZZt3", "K[`tr,ZZZ`]", "` `", 0,
"ZZZt3", "ZZZblood", "K[`tr,ZZZ`]", "` `", 0,
"ZZZblood", "ZZZprol", "ZZZ[regen]", "` `", -1,
"ZZZblood", "ZZZelim", "K[`tr,ZZZ`]", "` `", 0
) %>%
left_join(nodes, by=c(from_label="label")) %>%
rename(from=id) %>%
left_join(nodes, by=c(to_label="label")) %>%
rename(to=id) %>%
select(from, to, everything())
)
ggraph(schema, layout="manual", node.positions=setNames(nodes[c("pos_x", "pos_y")], c("x", "y"))) +
geom_edge_arc(
mapping=aes(
label=edge_label#,
#start_cap=label_rect(node1.label),
#end_cap=label_rect(node2.label)
),
arrow=arrow(length=unit(0.1, "inch")),
angle_calc="along",
label_parse=TRUE,
vjust=1,
curvature=as_tibble(schema, active="edges")$direction*0.2
) +
geom_edge_loop(
mapping=aes(strength=0.5, direction=135, label=loop_label),
angle_calc="along",
label_parse=TRUE,
vjust=-1
) +
geom_node_label(mapping=aes(label=label)) +
theme_void()# add start_cap and end_cap, now there are many lines to 0,0
ggraph(schema, layout="manual", node.positions=setNames(nodes[c("pos_x", "pos_y")], c("x", "y"))) +
geom_edge_arc(
mapping=aes(
label=edge_label,
start_cap=label_rect(node1.label),
end_cap=label_rect(node2.label)
),
arrow=arrow(length=unit(0.1, "inch")),
angle_calc="along",
label_parse=TRUE,
vjust=1,
curvature=as_tibble(schema, active="edges")$direction*0.2
) +
geom_edge_loop(
mapping=aes(strength=0.5, direction=135, label=loop_label),
angle_calc="along",
label_parse=TRUE,
vjust=-1
) +
geom_node_label(mapping=aes(label=label)) +
theme_void()Created on 2018-09-18 by the reprex package (v0.2.0).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels

