Grapher also lets you compute clusters, also known as communities. Note that internally, as for static layouts, grapher uses igraph. You are by no means forced to use grapher's clustering methods, you can always compute these yourself prior to initialising the graph.
Community detection is included in the package as it is often used to define visual aspects of a graph (e.g.: node color), but in fact does not directly pertain to graph visualisation. Therefore assigning nodes to communities using
graph_cluster has no direct effect on the visualisation.
graph_cluster function defaults to using
igraph::cluster_walktrap but you can use another clustering igraph function.
g <- make_data() graph(g) %>% graph_cluster()
If you ran the above you probably observed that the output graph was no different had you ran the snippet without
graph_cluster. This is, as mentioned above because is simply computes the cluster to which each node belongs but does not apply that to any aspect of the graph. We can do so with
scale_* functions (covered later).
g <- make_data() graph(g) %>% graph_cluster() %>% scale_node_color(cluster)
You may also specify a
weights argument in the event you want the clustering algorithm to take those into account.
graph(g) %>% graph_cluster(weights = weight) %>% scale_node_color(cluster)
Just to reiterate, you can compute those outside of the grapher pipe, using tidygraph.
library(tidygraph) play_smallworld(1, 100, 3, 0.05) %>% activate(nodes) %>% mutate( id = 1:n(), # add id group = group_walktrap() ) %>% graph() %>% scale_node_color(group)