Graphvix
Graphviz in Elixir
Installation
If available in Hex, the package can be installed as:
- Add
graphvixto your list of dependencies inmix.exs:
def deps do
[{:graphvix, "~> 0.5.0"}]
end
Usage
See the wiki for examples.
-
Alias the included modules for ease of use
alias Graphvix.{Graph, Node, Edge, Cluster} -
Create a new graph.
Graph.new(:first_graph) -
Add a single node
Node.new(label: "Start") -
Add an edge between two existing nodes
{node1_id, _node} = Node.new(label: "Start"){node2_id, _node} = Node.new(label: "End"){edge_id, _edge} = Edge.new(node1_id, node2_id, color: "blue") -
Add a cluster containing one or more nodes
{cluster_id, _cluster} = Cluster.new([node1_id, node2_id]) -
Update settings to nodes and edges
Node.update(node1_id, color: "red")Edge.update(edge_id, label: "My connector") -
Show the internal structure of the graph
Graph.get%{nodes: %{ ... },edges: %{ ... },clusters: %{ ... },attrs: [ ... ]} -
Convert the graph to DOT format
Graph.write"""digraph G {node_1 [label="Start",color="red"];node_2 [label="End"];node_1 -> node_2 [color="blue",label="My connector"];}""" -
Save the graph to a .dot file, with an optional filename
Graph.save #=> creates "first_graph.dot" -
Compile the graph to a PDF or PNG
Graph.compile #=> creates first_graph.dot and first_graph.pdfGraph.compile(:png) #=> creates first_graph.dot and first_graph.png -
Compile and open the graph as a PDF/PNG from IEx
Graph.graph #=> creates first_graph.dot and first_graph.pdf; opens first_graph.pdfGraph.graph(:png) #=> creates first_graph.dot and first_graph.png; opens first_graph.png -
Load a previously created graph.
Graph.switch(:old_graph)