Karnak.drawgraph
— MethodDraw a graph g
using coordinates in layout
to fit in a Luxor boundingbox
(defaulting to the current drawing's extent).
Returns a vector of Points, the location of the graph vertices as drawn.
Keyword arguments
boundingbox::BoundingBox graph fits inside this BB
layout Point[] or function
margin default 30
edgelist draw only these edges
vertexfunction(vtx, coords) -> draw vertices
edgefunction(edgenumber, edgesrc, edgedest, from, to) -> draw edges
layout
- the layout method or coordinates to be used. Examples:
layout = squaregrid
layout = shell
layout = vcat(
[between(O + (-W / 2, -H / 2), O + (-W / 2, H / 2), i) for i in range(0, 1, length=N)], # left
[between(O + (W / 2, H / 2), O + (W / 2, -H / 2), i) for i in range(0, 1, length=N)] # right
)
layout = stress
layout = (g) -> spectral(adjacency_matrix(g), dim=2)
layout = shell ∘ adjacency_matrix
layout = (g) -> sfdp(g, Ptype=Float64, dim=2, tol=0.05, C=0.4, K=2)
layout = Shell(nlist=[6:10,]) # inner shell for vertices 6 to 10
layout = squaregrid
the_positions = [(pt.x, pt.y) for pt in randompointarray(BoundingBox(), 50)[1:nv(G)]]
the_weights = rand(1:20, nv(G), nv(G))
layout=Stress(initialpos = the_positions,
iterations = 30,
weights = the_weights)
layout = Stress(iterations = 100, weights = M) # M is matrix of weights
layout = Spring(iterations = 200, initialtemp = 2.5)
Refer to the NetworkLayout.jl documentation for more.
Extended help
All keywords:
boundingbox BoundingBox
margin Number
layout Vector{Point}
function from NetworkLayout.jl
f(g::Graph)
edgefunction f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point)
vertexfunction f(vtx::Int, coordinates::Vector{Point})
edgearrows :none
Boolean - draw end arrow
Vector
f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point)
- function overrides edgegaps
edgecurvature Float64
edgedashpatterns Vector{Vector}[number]
Vector{Number}
edgegaps Vector
Range
Real
f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point)
edgelabelcolors Vector{Colorant}
Colorant
edgelabelfontfaces Vector{Strings}[edgenumber]
String
:none
edgelabelfontsizes Vector{Number}
Number
edgelabelrotations Vector{angles}
angle::Float64
f(edgenumber, edges, edgedest, from, to)
edgelabels Vector
range
Dict{Int, Int}
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
- this function must draw the required text
:none
edgelines Vector{Int}
range
Int
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
edgelist Graphs.EdgeIterator
edgestrokecolors Vector{Colorant}[edge::Int]
Colorant
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
edgestrokeweights Vector{Number}[vtx]
range
Real
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
vertexfillcolors Vector{Colorant}
Colorant
:none
f(vtx::Int)
vertexlabelfontfaces Vector{Strings}
String
vertexlabelfontsizes Vector
range
Real
:none
f(vtx::Int, coord::Point[])
- function must return a numeric value for fontsize
vertexlabeloffsetangles Vector
Range
Real
vertexlabeloffsetdistances Vector
range
Real
vertexlabelrotations Vector
range
Real
:none
vertexlabels Vector{String}
String
range[vtx::Int]
:none
f(vtx::Int)
- this function must return a string
vertexlabeltextcolors Vector{Colorant}
Colorant
f(vtx::Int)
:none
vertexshaperotations f(vtx::Int)
angle::Float64
vertexshapes Vector of :circle :square :none
range[vtx]
:circle :square :none
f(vtx::Int)
vertexshapesizes Vector{Real}
range
Real
:none
f(vtx::Int)
vertexstrokecolors Vector
Colorant
:none
f(vtx::Int)
vertexstrokeweights Vector
range
:none
f(vtx::Int)