My question in brief: what are some reasonable design options for displaying data in weighted, directed, cyclical graphs?

The longer version: I have some data that details shipments of goods from one place to another over time, and am searching for an elegant way to visualize the data.

In the case of undirected graphs, one can use chord diagrams, or matrices with colored cell values, to represent this data nicely. My graph is directed though, so these are out.

One technique I've seen for directed weighted graphs is to represent each observation as a discrete primitive (line, arc, etc), as in the Charting Culture visualization:

enter image description here

Maps of shipping routes and airline traffic often use this strategy. That said, it can be difficult to see aggregate trends in this kind of visualization.

Another strategy is to try to encode the weight between vertices i, j visually, e.g. through color, width, or intensity. Visualizations of neural network weights sometimes use this strategy [link]:

enter image description here

That said, it can be hard to appreciate the strength of a weight by virtue of the color, width, or intensity of the geometry that connects two vertices.

I'm trying to come up with some novel, strange ways to visualize weighted, directed, cyclic graphs. Do others have notions on how one might achieve this goal? Any insights or suggestions would be very helpful!


Have you looked at the use of Sankey diagrams for this purpose?

Sankey diagrams are a specific type of flow diagram, in which the width of the arrows is shown proportionally to the flow quantity.

Sankey diagrams put a visual emphasis on the major transfers or flows within a system. They are helpful in locating dominant contributions to an overall flow. Often, Sankey diagrams show conserved quantities within defined system boundaries.

So I think you can get the balance between showing something that indicates flow while also displaying the weight visually. It has the benefits of the visual representation of flow and weight on the same plane, and I think it is a good fit for your use case.

UPDATE (based on comment):

You can also consider radial tables that can be used to achieve the same purpose as the Sankey diagrams (to show flow) and apply weight using colour intensity or width as per suggested solution. The radial table has the advantage of showing a closed or contained flow.

For either solutions, you can use a timeline that is either static or played over a period of time at a set speed to show the change over time.

  • Thanks for this thought @MichaelLai. I've seen Sankey diagrams to be most effective when some data flows through a series of different levels and is acyclic. If however data flows through the same series of levels every time period, then this approach might be kind of confusing (it will form a lattice in which each layer is completely connected to the previous layer). If you have other notions of non-traditional chart types (ideally charts that don't fall into known chart types) I'd certainly love to hear about those! – duhaime Nov 10 '18 at 21:44
  • @duhaime the issues with non-traditional chart types is that they can be more difficult to interpret for most people because of the unfamiliarity or added complexity of the design. I feel like I still need to see the raw data that you have to get a better idea, but I have updated the answer based on the feedback. – Michael Lai Nov 10 '18 at 23:40

Your Answer

By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.