Graphs.jl
Overview
The goal of Graphs.jl is to offer a performant platform for network and graph analysis in Julia, following the example of libraries such as NetworkX in Python. To this end, Graphs.jl offers:
- a set of simple, concrete graph implementations –
SimpleGraph(for undirected graphs) andSimpleDiGraph(for directed graphs) - an API for the development of more sophisticated graph implementations under the
AbstractGraphtype - a large collection of graph algorithms with the same requirements as this API.
Installation
Installation is straightforward. First, enter Pkg mode by hitting ], and then run the following command:
pkg> add GraphsBasic use
Graphs.jl includes numerous convenience functions for generating graphs, such as path_graph, which builds a simple undirected path graph of a given length. Once created, these graphs can be easily interrogated and modified.
julia> g = path_graph(6)
{6, 5} undirected simple Int64 graph
# Number of vertices
julia> nv(g)
6
# Number of edges
julia> ne(g)
5
# Add an edge to make the path a loop
julia> add_edge!(g, 1, 6);Documentation
The full documentation is available at GitHub Pages. Documentation for methods is also available via the Julia REPL help system. Additional tutorials can be found at JuliaGraphsTutorials.
Citing
We encourage you to cite our work if you have used our libraries, tools or datasets. Starring the Graphs.jl repository on GitHub is also appreciated.
The latest citation information may be found in the CITATION.bib file within the repository.
Contributing
We welcome contributions and bug reports! Please see CONTRIBUTING.md for guidance on development and bug reporting.
JuliaGraphs development subscribes to the Julia Community Standards.
Related packages
It is an explicit design decision that any data not required for graph manipulation (attributes and other information, for example) is expected to be stored outside of the graph structure itself.
Additional functionality like advanced IO and file formats, weighted graphs, property graphs, and optimization-related functions can be found in the packages of the JuliaGraphs organization.
Project history
Graphs.jl is the successor to LightGraphs.jl (archived October 2021); see the CHANGELOG for the full transition history.