Skip to content

Design Choices

bhpayne edited this page Dec 20, 2014 · 2 revisions

List of the various options for design decisions

Table of Contents

Introduction

There are a couple of decisions to be made:

  • what format should the graph be stored in?
  • what format should the database be stored in?
  • what programs can render and interact with the graph?
https://en.wikipedia.org/wiki/Graph_database

Latex to SVG

    * http://docs.mathjax.org/en/latest/options/SVG.html
  * http://www.cityinthesky.co.uk/opensource/pdf2svg

Graph format

The following are ways in which the graph can be rendered

DOT to XML http://www.mydarc.de/dl9obn/programming/python/dottoxml/

GXL to GraphML and Vice Versa with XSLT: https://dl.acm.org/citation.cfm?id=1705905

  * GraphML
    * http://graphml.graphdrawing.org/
    * https://en.wikipedia.org/wiki/GraphML
    * http://graphml.graphdrawing.org/primer/graphml-primer.html
    * GraphML is an specification in XML
    * human readable
    * structured text
    * GraphML supports SVG
  * GXL (Graph eXchange Language)
    * https://en.wikipedia.org/wiki/GXL
    * http://www.gupro.de/GXL/
  * Trivial Graph Format
    * https://en.wikipedia.org/wiki/Trivial_Graph_Format
  * DOT
    * https://en.wikipedia.org/wiki/DOT_language

Database format

The following are ways the data can be stored

  * XML
    * human readable
    * structured text
    * non-standard tags=not recognized by any other programs
  * plain text
    * human readable
    * non-standard structure

Graphing programs

The following are ways to render a text graph visually

https://en.wikipedia.org/wiki/Diagramming_software

stand-alone applications for drawing graphs

  * GraphViz
    * produces static output (cannot be manipulated through GUI)
    * https://en.wikipedia.org/wiki/Graphviz
    * http://www.graphviz.org/
  * Gephi
    * meant for analysis of graph properties, not graph manipulation
    * https://gephi.org/
    * https://gephi.org/users/supported-graph-formats/
      * GEXF, GDF, GML, GraphML, Pajek NET, GraphViz DOT, CSV, UCINET DL, Tulip TPL, Netdraw VNA, Spreadsheet
    * pictures as nodes:
      * https://gephi.org/plugins/image-preview/
  * yEd
    * good for editing the visual graph. Offers multiple layout options
    * https://en.wikipedia.org/wiki/YEd
    * http://www.yworks.com/en/products_yed_download.html
    * works with GraphML
    * pictures (SVG) as nodes:
      * http://yed.yworks.com/support/qa/48/how-can-i-use-my-own-node-symbols-in-yed
      * http://yed.yworks.com/support/qa/7/can-i-use-latex-to-format-labels
  * Dia
    * doesn't support force-based layout. 
    * http://live.gnome.org/Dia/
    * http://projects.gnome.org/dia/
    * https://en.wikipedia.org/wiki/Dia_(software)
  * Calligra Flow (formerly Kivio)
    * https://en.wikipedia.org/wiki/Calligra_Flow
    * http://www.calligra.org/get-calligra/
  * Processing
    * Example of Pre-existing graph: http://www.openprocessing.org/visuals/?visualID=9379
    * would need to use pictures for nodes instead of Latex

browser-based graph rendering

See also the list provided at http://stackoverflow.com/questions/7034/graph-visualization-code-in-javascript

open source, free browser-based graph rendering

 * JS-Graph-It
   * http://js-graph-it.sourceforge.net/index.html
 * Cytoscape
   * http://cytoscape.github.io/cytoscape.js/
   * https://github.com/cytoscape/cytoscape.js
   * supports pictures as nodes: http://jsbin.com/kahar/6/edit
 * Dracula
   * http://www.graphdracula.net/
   * supports PNG and SVG as nodes, see http://www.graphdracula.net/documentation/
 * Canviz
   * https://code.google.com/p/canviz/
 * ArborJS
   * http://arborjs.org/
   * force-directed layout algorithm 
 * SigmaJS
   * http://sigmajs.org/
 * D3JS
   * http://d3js.org/
 * JointJS
   * http://jointjs.com/download
 * Springy
   * https://github.com/dhotson/springy
   * http://dhotson.github.io/springy/demo.html
 * arbor
   * https://github.com/samizdatco/arbor
 * Gilad
   * http://giladlotan.com/html5-interactive-directed-graph/
 * large graph viz HTML5
   * https://gitorious.org/web-based-large-graph-visualization-with-html-5/web-based-large-graph-visualization-with-html-5/source/HEAD:
 * JSPlumbToolkit
   * http://jsplumbtoolkit.com/demo/home/dom.html

commerical, not free, browser based graph rendering

 * EquationMap
   * http://equationmap.com/