PIK-ICoNe / EmbeddedGraphs.jl

Embedded Graphs for Julia
GNU General Public License v3.0
7 stars 1 forks source link

EmbeddedGraphs.jl

Example usage

The example requires

using EmbeddedGraphs
using Distances
using Graphs

Set the position of the vertices that need to be placed on the graph

positions = map(i->[rand(),rand()], 1:10)

Create the graph with a given SimpleGraph structure and positions

eg = EmbeddedGraph(SimpleGraph(10), positions)

In case you want to have a different metric this is possible with a third argument, where the points P and Q should be the positions of the vertices.

eg_minkowski = EmbeddedGraph(SimpleGraph(10), positions, (P, Q) -> minkowski(P, Q, 2.))

Calculate the distance between two vertices ...

eg[1,9]

... or likewise

euclidean(eg.vertexpos[1], eg.vertexpos[9])

Get the x value of all the vertices ...

vertices_loc(eg, 1)

... or y location

vertices_loc(eg, 2)

Get the Weightsmatrix with distances between every vertex ...

weights(eg, dense=true)

... or only a sparse matrix with only connected vertices

weights(eg, dense=false)

Add an edge

add_edge!(eg, 1, 9)
add_edge!(eg, 5, 7)

Remove an edge

rem_edge!(eg, 1, 9)

Add a vertex at position (0.1, 0.7)

add_vertex!(eg, [0.1, 0.7])

Remove a vertex

rem_vertex!(eg, 5)
rem_vertices!(eg, [1, 2, 3])

Plot the graph embedded in 2D

gplot(eg)