The central package of the ecosystem is Graphs.jl. It contains a standard graph interface and some basic types for unweighted graphs, as well as a set of combinatorial algorithms like shortest paths.
Many of the other packages we list rely only on this interface, so as to be compatible with arbitrary graph types.
SimpleWeightedGraphs.jl: Simple graphs with weighted edges.
MetaGraphs.jl: Graphs with metadata on the vertices and edges.
MetaGraphsNext.jl: A more efficient but less flexible alternative to MetaGraphs.jl.
StaticGraphs.jl: Memory-efficient immutable graphs.
MultilayerGraphs.jl: Graphs with multiple layers.
GraphsFlows.jl: Flow optimization algorithms.
GraphsMatching.jl: Matching optimization algorithms.
CommunityDetection.jl: Community detection algorithms.
GraphsOptim.jl: Graph optimization algorithms that rely on mathematical programming.
GraphIO.jl: Read graphs from files and write them to files in various formats.
SNAPDatasets.jl: Extract graphs from the SNAP Datasets collection.
GraphPlot.jl: Graph visualization utilities.
NetworkLayout.jl: Layout algorithms to position nodes automatically before plotting graphs and trees.