The visual structure of a network depends heavily on the layout algorithm. ggraph supports several layouts, including:
stress (default)kk (Kamada Kawai)layout_with_fr() (Fruchterman-Reingold)layout_as_tree()layout_nicely()layout_in_circle()
You can also provide a custom layout using 2D coordinates (e.g., from a UMAP) by using ggraph::create_layout(graph, custom_layout_df).
# 1. default layout
p1 <- ggraph(graph) +
geom_edge_link(aes(alpha=weight, color=edge_color)) +
geom_node_point(aes(color=module)) +
scale_colour_manual(values=mod_cp) +
scale_edge_colour_manual(values=mod_cp) +
ggtitle("layout = 'stress' (auto)") +
NoLegend()
# 2. Kamada Kawai (kk) layout
graph2 <- graph; E(graph)$weight <- E(graph)$weight + 0.0001
p2 <- ggraph(graph, layout='kk', maxiter=100) +
geom_edge_link(aes(alpha=weight, color=edge_color)) +
geom_node_point(aes(color=module)) +
scale_colour_manual(values=mod_cp) +
scale_edge_colour_manual(values=mod_cp) +
ggtitle("layout = 'kk'") +
NoLegend()
# 3. igraph layout_with_fr
p3 <- ggraph(graph, layout=layout_with_fr(graph)) +
geom_edge_link(aes(alpha=weight, color=edge_color)) +
geom_node_point(aes(color=module)) +
scale_colour_manual(values=mod_cp) +
scale_edge_colour_manual(values=mod_cp) +
ggtitle("layout_with_fr()") +
NoLegend()
# 4. igraph layout_as_tree
p4 <- ggraph(graph, layout=layout_as_tree(graph)) +
geom_edge_link(aes(alpha=weight, color=edge_color)) +
geom_node_point(aes(color=module)) +
scale_colour_manual(values=mod_cp) +
scale_edge_colour_manual(values=mod_cp) +
ggtitle("layout_as_tree()") +
NoLegend()
# 5. igraph layout_nicely
p5 <- ggraph(graph, layout=layout_nicely(graph)) +
geom_edge_link(aes(alpha=weight, color=edge_color)) +
geom_node_point(aes(color=module)) +
scale_colour_manual(values=mod_cp) +
scale_edge_colour_manual(values=mod_cp) +
ggtitle("layout_nicely()") +
NoLegend()
# 6. igraph layout_in_circle
p6 <- ggraph(graph, layout=layout_in_circle(graph)) +
geom_edge_link(aes(alpha=weight, color=edge_color)) +
geom_node_point(aes(color=module)) +
scale_colour_manual(values=mod_cp) +
scale_edge_colour_manual(values=mod_cp) +
ggtitle("layout_in_circle()") +
NoLegend()