Creative Synthesis Blog

Talking about Creativity as Combination, The thoughts and works of the Creative Synthesis Collaborative.

Feed Subscriptions

RSS FeedRSS Things
RSS Comments

Present This Blog

A Friendly Note

To support us, Make a Donation - we rely on private donations for our operating costs, things like paying salaries and stipends, office space, and even post-its.

Rolling Links

Things by Month

• You can follow comments through the RSS 2.0 feed. You can leave a comment, or trackback.

Graph Gear is an open platform for graph visualization (the mathematical kind, not the bar chart kind). It allows you to create an interactive graph with force directed layout that has a good interactive user experience.

Demo | Download | gpl | Current Version 1.4

Graph Gear

If you are interested in more permissive commercial use, please contact us

Additional Notes

This code is also available over subversion, see more information at the collaborative code repository.

Graph Gear allows you to quickly render a customizable interaction graph that is described by a graph xml file. All you need to do is embed it in your page and pass the xml over javascript. It provides nice interactive capabilities and a force directed layout. The code is editable and compilable with MTASC, and it also features a javascript api to control graph interactions.

Release Notes for 1.4

  • Vastly Expanded Javascript API - Almost all properties for a graph can be changed over javascript. Nodes can also be added (though not deleted) during a user session. Also good, nodes now notify javascript when you interact with them, allowing significantly richer applications to be built.
  • Code Compilation for Non Flashers - Almost all of the code (accept for one or two dangling bits) has been moved to the class files. That means that non flashers can compile by the command line using a free software compiler like mtasc. It’s so easy, its just one line of compile!
  • Graphs can now be directed (add type=”directed” to the graph tag, defaults to “undirected”), currently the marker is just a simple arrowhead in the color of the line.
  • Support for different, multiple node types (currently supporting: SquareNode, CircleNode, CircleTextNode, OpenNode) - CircleNode is the previous style. A SquareNode is (surprise) a square, a CircleTextNode is a CircleNode with a simpler text display style, an OpenNode is intended to be used with a transparent png (it doesn’t mask to a shape).
  • Basic Support for Clustering - The toolkit was intended to draw a single graph, meaning all of the nodes are connected. Still, sometimes you have a few unconnected graphs that need to be displayed. Clusters (cluster=”clustername”) allow you to create groups of nodes that don’t interact with other groups. Nodes default to the aptly named “default” cluster. If you wanted a second minigraph of two nodes connected only to each other, for example, you could assign them to the cluster “secondcluster”. This is still very basic.
  • Added support for alternative node interactions (on a graph wide basis). The included example is action=”center”, this interaction centers nodes on click, rather than allowing the user to drag them around.
  • Added preliminary support for line locking (if you want to use the force directed layout in a single dimension, by locking to the x or y axis (lock=”x”, lock=”y”). Pretty buggy at the moment, bound and adjust need to be turned way down)
  • Added ability to hide labels explicitly (hideLabel=true) (labels are always hidden if they have no content)
  • Rotation has been fixed (no weird jumping)
  • Added animation library. animation=”true” will enable some basic animations (like node selection effects.)
  • Edge bounce - stupid nonfeature, nodes now repel when they hit the edge, making them look extra cool.
  • Added additional information in docs/ for javascriptapi, compilation and new xml property descriptions.
  • Bug fixes all around (and fast blast kudos)

Things that could still stand to be done.

  • Better linking to more live data sources. Solutions like Passant’s are good, but they still require building an xml file. It would nice if you could (for example) just pass things like a foaf uri to the graph and it would figure out what’s going on. Of course this kind of thing requires more specific kinds of code.

Additional Links

When we started working on graph gear it was mostly because there wasn’t a good opensource flash graph solution. There are now a few more: (flexvizgraphlib, springgraph flex component).

This thing was constructed by .
Matthew is the Director of the Collaborative. He writes rarely, and that makes him sad.

• You can follow comments through the RSS 2.0 feed. You can leave a comment, or trackback.

This thing has 9 Comments

  1. Posted March 8, 2008 at 4:41 pm | Permalink

    Hey There:

    I am really loving this code, I plan to use it for a project on media ownership, however I am stumbling in a major way in trying to get the “jsSwitchXml” function to work - exactly in the same way it works on your demo page. It doesn’t seem to be loading the XML at all. I’ve monkeyed with the source paths, the variables, etc to no avail.

    Also - if you have any suggestions as to the best method for implementing cheap mouseover functions (javascript or as3 hack?) I am all eyes. Thanks for putting this thing together and SUPER THANKS if you get back to me…
    cheers,
    adam.

  2. Matthew Hockenberry
    Posted March 11, 2008 at 12:40 pm | Permalink

    Adam, I had the code sent as it is setup on the server. The jsSwitchXml wasn’t really intended for outside use (though I see now why it is useful).

    As for mouseover stuff. Any ideas about how we could structure something? What kind of stuff did you want to do?

  3. Posted April 22, 2008 at 7:52 am | Permalink

    Hi,

    I have updated my Graph Gear version used and it looks fine :
    http://www.osocial.net/network/graph/graphgear/index.php?id=1

    Visualize your social graph from MySpace, Facebook, Orkut or hi5 with http://www.osocial.net/network

    Victor

  4. yuyuyu
    Posted May 10, 2008 at 8:56 pm | Permalink

    Hi,

    I’m really interested in this tool.
    cool design and interface.

    I would like to use it for visualizing directed graphs.
    I hope for the sort of a option of visualizing edges as arrows from souceNode to targetNode.
    If I’m not being too intrusive, I have to ask that, rendering directed graphs is in your future work list?

    Sincerely,

    yuyuyu

  5. Matthew Hockenberry
    Posted May 12, 2008 at 4:34 pm | Permalink

    Hey there yuyuyu. Directed graphs are definitely in the todo list, they just haven’t been a large priority. The graph knows the direction of the connections (as you mention, there is a source and target node) just right now it doesn’t render anything differently to indicate that. Doing this is fairly simple, a matter of adding an arrow or similar indicator to show directionality.

  6. yuyuyu
    Posted May 13, 2008 at 11:15 am | Permalink

    Thank you for your time.
    I see. The very best wishes for a prosperity of the tool.

    yuyuyu

  7. twill
    Posted July 1, 2008 at 12:52 pm | Permalink

    What is the exact syntax for checking out the project using svn. I tried the following, but it didn’t work:

    svn co http://www.creativesynthesis.net/code/wsvn/Collaborative-Code/graphgear/trunk/

    It returned the following:

    svn: PROPFIND request failed on ‘/code/wsvn/Collaborative-Code/graphgear/trunk/source’
    svn: PROPFIND of ‘/code/wsvn/Collaborative-Code/graphgear/trunk/source’: 200 OK (http://www.creativesynthesis.net)

    Any ideas?

  8. Matthew Hockenberry
    Posted July 6, 2008 at 1:50 pm | Permalink

    Twill, we’ve moved to a hosted repository (but haven’t updated everything referencing the old url yet). You can get this at: https://collaborative.svn.beanstalkapp.com/public/darkresearch/graphgear/

    To checkout use:
    svn co https://collaborative.svn.beanstalkapp.com/public/darkresearch/graphgear/
    To export use:
    svn export https://collaborative.svn.beanstalkapp.com/public/darkresearch/graphgear/

  9. yuyuyu
    Posted September 8, 2008 at 3:51 am | Permalink

    hi,

    thanks to updating, i try to make tag derivation networks of “Del.icio.us” with your code.
    i feel link color and thickness parameter would be useful options.
    http://www-sato.cc.u-tokyo.ac.jp/KAWANAKA.Sho/del/tagdependency/tagdependency.html

    and here are tag networks of “nicovideo”. it would be garbled without japanease font..
    http://www-sato.cc.u-tokyo.ac.jp/KAWANAKA.Sho/del/nicograph/index2.html

    yuyuyu

This thing has 5 Trackbacks

  1. Posted April 27, 2008 at 3:14 am | Permalink

    [...] GraphGear [...]

  2. Posted May 15, 2008 at 1:14 pm | Permalink

    [...] I came across this nice little flash force directed graph today. It was put together by Creative Synthesis. [...]

  3. Posted May 17, 2008 at 3:00 pm | Permalink

    [...] I came across this nice little flash force directed graph today. It was put together by Creative Synthesis. [...]

  4. Posted June 9, 2008 at 10:32 pm | Permalink

    [...] Graph Gear | Creative Synthesis (tags: visualization code) No Comments Leave a Commenttrackback addressThere was an error with your comment, please try again. name (必須)email (will not be published) (必須)url [...]

  5. Posted September 20, 2008 at 8:10 am | Permalink

    [...] GraphGear kann mittels eines einfachen XML Graphen eines Netzwerks erstellen. Hier gibt es eine GraphGear Demo. [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*