Computer Sciences Dept.


Epistemic Data Visualization


Description

This is the product of a three-week design challenge in a Visualization topics course. The basic problem is to find a method of visualizising the differences in two Epistemic Frames. Epistemic Frames are basically weighted graphs where each node represents a "concept" and each connection represents how closely the concepts are weighted. The challenge in this project was to create visualizations that allow comparison between multiple frames.

Three individuals contributed to this project including myself. The other members are Ye Liu and Shuang Huang.

Solution

Our solution is to create a tool that allows the user to load Frame data in a specified format and view it at three levels.

Level 1

At the first level, the user can view clustering of frame data about a reference frame given a distance function. The distance function is written in such a way that a number is generated given two frames. This number represents the "distance" between the two frames. The view plots the reference frame at the center of the view and plots all other frames around the reference frame at distances that are proportional to the distance returned by the distance function. There is no data encoded in the position of the encircling frames; they are displayed this way to make good use of the space and to help see clustering patterns in the frame data. Two buttons "Load Min Distance" and "Load Max Distance" are provided to select the reference frame that has the smallest and largest distance to each frame.

The view is interactive. By hovering the mouse over a node, the name of the frame it represents is displayed. Double-clicking a node changes that node to the reference frame and replots all other nodes accordingly. Single-clicking on a node "selects" it. Selected nodes are used when the "Compare" button is pressed.

The compare button simply opens the second and third views given the selected frames.

In the interests of keeping this tool extensible, every effort has been made to make adding difference functions as simple as possible. Difference functions are handled using a map of function pointers and as such, once a function with the appropriate declaration has been written, it can be added by simply inserting it into a map. This requires only modifying one file not including any code required for the distance function.

Level 2


The second view can show the differences between two frames. When the "Compare" button is pressed, the first two frames found in the set of selected frames are used for the comparison.

The concept of the second view is simple. The two frames are subtracted from each other. The size of the difference is encoded in the saturation of the box. If the difference is positive, a green hue is used; otherwise, a red hue is used. This view is best suited for finding a general distribution of differences in the two frames; high saturation means there is a large difference while low saturation means a small difference. Seeing a matrix with evenly distributed colors means that the two frames differ in each element by about the same amount. Seeing one or two solid colors with the rest close to white means that there are only a few differences between the elements.

Level 3


The third view is presented at the same level as the second view because it attempts to compare frame elements. In this case, the visualization attempts to show the differences between elements of more than two frames. This is accomplished by displaying a bar chart for each element.

Currently colors are generated randomly and there is no key. These may be added in later versions if requested.

Frame input format

Frames are loaded from .csv files which encode the data as adjacency matricies. The file must contain only lines of numbers and the number of numbers per line must equal the number of rows in the file. Minimal error checking has been implemented at this point and the program may crash if badly-formed input is used.

Sample Frame Data can be found here .

Extensibility

As mentioned before, this tool was designed to be extensible. The user has the ability add distance functions in the first view and the ability to derive from the DiffWidget class and implement the appropriate functions for displaying a new visualization. Adding new views is slightly more complicated but any competent C++ programmer should be able to do it.

Implementation

This tool was created entirely in C++ using the Qt windowing libraries for platform compatibility.

Source Code

I am releasing this code under the terms of the Gnu Public License (GPL). A copy of the license in included in the zip file.

I am also including a zip file of the win32 binary compiled using mingw. included with this is mingwm10.dll which is required to run the binary. This is also free to distribute and the license is included in the zip file.

Source cs838-dc1-src.zip
Win binary cs838-dc1-bin.zip
Report cs838-dc1-report.pdf

 
Computer Sciences | UW Home