-
Notifications
You must be signed in to change notification settings - Fork 114
Closed
Labels
Description
This seems related to #62, but that issue was closed and I'm seeing this in version 1.0.1.
The below example contains a loop and specifies end_cap for the edges, and one of the edges is the wrong color. The next examples show that it plots correctly when the loop is replaced with a non-loop edge, when the loop is listed after the other edges, and when end_cap is not specified.
The problem persists when using an undirected graph, when using geom_edge_link or geom_edge_arc instead of geom_edge_fan, and when omitting the geom_edge_loop call.
library(ggraph)
library(igraph)
## Incorrect when loop listed first
d <- data.frame(node1 = c('C', 'A', 'B'),
node2 = c('C', 'B', 'A'),
value = c('Y', 'X', 'X'))
g <- graph_from_data_frame(d, directed = TRUE)
ggraph(g, layout = 'nicely') +
geom_edge_fan(aes(color = value),
end_cap = circle(5, 'mm')) +
geom_edge_loop(aes(color = value)) +
geom_node_label(aes(label = name))
## Correct when no loop
d <- data.frame(node1 = c('C', 'A', 'B'),
node2 = c('D', 'B', 'A'),
value = c('Y', 'X', 'X'))
g <- graph_from_data_frame(d, directed = TRUE)
ggraph(g, layout = 'nicely') +
geom_edge_fan(aes(color = value),
end_cap = circle(5, 'mm')) +
geom_edge_loop(aes(color = value)) +
geom_node_label(aes(label = name))
## Correct when loop listed third
d <- data.frame(node1 = c('A', 'B', 'C'),
node2 = c('B', 'A', 'C'),
value = c('X', 'X', 'Y'))
g <- graph_from_data_frame(d, directed = TRUE)
ggraph(g, layout = 'nicely') +
geom_edge_fan(aes(color = value),
end_cap = circle(5, 'mm')) +
geom_edge_loop(aes(color = value)) +
geom_node_label(aes(label = name))
## Correct when no end_cap specified
d <- data.frame(node1 = c('C', 'A', 'B'),
node2 = c('C', 'B', 'A'),
value = c('Y', 'X', 'X'))
g <- graph_from_data_frame(d, directed = TRUE)
ggraph(g, layout = 'nicely') +
geom_edge_fan(aes(color = value)) +
geom_edge_loop(aes(color = value)) +
geom_node_label(aes(label = name))
JasonAizkalns