LightGraphs -- creation of digraph?


Three simple/elementary questions for first attempts of using LightGraphs:

  1. With M a matrix, command g = DiGraph(M) produces the graph I’m interested in, but how does LightGraphs know whether M is meant to be an adjancency matrix or an incidence matrix?
  2. If an adjacency matrix is assumed, what happes if the non-zero elements of M are floating point numbers and different from 1.0? Are they converted to 1 or 1.0? Or are the numbers preserved and used as, say, some weights?
  3. Suppose I want to plot the graph using gplot() of GraphPlot, and that I have specified different colors for the various nodes using gplot(g,nodefillc = V) where V is a vector of colors. Is there a separate keyword for specifying the alpha color, valid for all nodes?



Re 1. I think it is always assumed that the matrix is for adjacency.
Re 2. I guess that the matrix is not actually stored, but only used to fill the adjacency lists of SimpleDiGraph.


One thing that is confusing… the documentation talks about SimpleGraph and SimpleDiGraph, but I’ve seen some examples where they instead use the constructors Graph and DiGraph. Are the latter synonyms, or names from previous versions of LightGraphs?
In other words: is it more future proof to use SimpleDiGraph than using DiGraph?


They are just aliases, so you can use either without problem:


Super; thanks!
A final question… I have tried to use GraphPlot, which is simple to use and in general ok. However, it does not handle self edges well…
As an example of a much better treatment of self edges, see picture below – taken from Boyd and Vandenberghe’s 2018 Introduction to Applied Linear Algebra.

  • Does any of the plot packages for Graph come close to the quality in the above figure?
  • Does any of the packages support LaTeX typesetting of math?