Graphviz in Elixir
If available in Hex, the package can be installed as:
- Add
graphvix
to your list of dependencies inmix.exs
:
def deps do
[{:graphvix, "~> 0.5.0"}]
end
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.pdf Graph.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.pdf Graph.graph(:png) #=> creates first_graph.dot and first_graph.png; opens first_graph.png
-
Load a previously created graph.
Graph.switch(:old_graph)