I'm looking for a way to visualize the association between two data sets. One of these data sets is itself organized in a hierarchy. For example:

Set 1 - Students:

  • Anna
  • Belinda
  • Charles
  • Daniel
  • Ellen
  • Francis

Set 2 - Classes:

  • Mathematics
    • Calculus
    • Matrix Algebra
    • Number Theory
  • Sciences
    • Physics
      • Physics 101
      • Physics 102
    • Chemistry
      • Chemistry 101
      • Chemistry 102

As a user, I want to easily view which students are in a particular class, and which classes a particular student is in. I would like to be able to select Anna, for example, and see that she is in Sciences, Physics, Physics 101, and Matrix Algebra. Note that association to the child does not directly imply association to the parent. In this case, Anna can be in Matrix Algebra, but not in Mathematics. Likewise, I want to select Physics 101 and see that Anna, Charles, and Francis are in that class.

The only way I have found to appropriately display these sort of relations is a bipartite graph with one side adjusted for the hierarchy. While this displays all of the information required, it can get quite busy with a significant amount of data (say 1000 students in 100 classes in the above example). Is there a concise way of displaying these sort of relations, or am I better off splitting these into different visualizations or searchable tables?

  • @Monomeeth - I think you interpreted my exclusion of Mathematics as an oversight. With my data, you can be associated to a child without being associated to the parent. I didn't explicitly state that, so I can see how it could be confusing. Edited to account for that.
    – Kys
    Commented Jun 6, 2016 at 15:22

1 Answer 1


Don't show all the relationships, just list the information that the user asks for if the tasks are that simple i.e. the classes Anna is in, or all the students in Chemistry 101. They can select these initial choices through a pair of lists / indented lists.

On the occasion the user wants to see extra relations you can incrementally build a much simpler localised bipartite graph/representation from the datapoints the user selects i.e. Anna is in chemistry 101 & physics 101, user selects Chemistry 101 to view other students, user then finds Mike, clicks Mike to view his courses etc - you could alternatively make the display automatically expand one out from your initial choice (i.e selecting show all Anna's courses also shows all the other students on her courses)

Either way I'm saying my approach would be to build up a subset of the data you're interested in rather than trying to visually whittle down or explore the full data set to try and find the same data points. Showing all the information at once does show the complexity of the dataset, but beyond that it's not much use except for magazine covers and global overviews (e.g. those graphs of the internet that pop up) - they very quickly get too busy to interpret details, especially in node-link displays (there's an entire corpus of papers on the effects of edge crossings and how to alleviate them - https://scholar.google.co.uk/scholar?hl=en&q=%22edge+crossings%22+graph)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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