knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
graphcoloring
is a collection of graph coloring algorithms for coloring vertices of a graph such that no two adjacent vertices share the same color. The algorithms
are included via the embedded 'GraphColoring' C++ library, https://github.com/brrcrites/GraphColoring.
You can install the released version of graphcoloring from CRAN with:
install.packages("graphcoloring")
Development version can be installed with
devtools::install_github("saurfang/graphcoloring")
color_*
functions operate under tidygraph
family and can be used to color nodes within mutate
context similar to group_*
functions in tidygraph
.
library(graphcoloring) library(tidygraph) library(ggraph) set.seed(42) play_islands(5, 10, 0.8, 3) %>% mutate(color = as.factor(color_dsatur())) %>% ggraph(., layout = 'kk') + geom_edge_link(aes(alpha = ..index..), show.legend = FALSE) + geom_node_point(aes(color = color), size = 7) + theme_graph()
graph_coloring_*
functions directly take adjacency lists and returns an integer vector of assigned labels.
For example, this can be used with sf::st_intersects()
to color a feature collection for visualization.
library(graphcoloring) library(USAboundaries) library(sf) library(ggplot2) set.seed(48) us_states() %>% filter(!(name %in% c("Alaska", "District of Columbia", "Hawaii", "Puerto Rico"))) %>% mutate( color = st_intersects(.) %>% graph_coloring_dsatur() %>% as.factor() ) %>% ggplot() + geom_sf(aes(fill = color)) + theme_bw()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.