TTrautner / LineWeaver

Line Weaver - EuroVis 2021 (Zurich, Switzerland)
GNU General Public License v3.0
3 stars 0 forks source link

Line Weaver

Repository: https://github.com/TTrautner/LineWeaver DOI: https://doi.org/10.1111/cgf.14316

Abstract

Line charts are an effective and widely used technique for visualizing series of ordered two-dimensional data points. The relationship between consecutive points is thereby indicated by connecting line segments, revealing potential trends or clusters in the underlying data. However, when dealing with an increasing number of lines, the render order has a major influence on the resulting visualization. Rendering transparent lines can help but unfortunately the blending order is currently either ignored or naively used, for example, assuming it is implicitly given by the order in which the data was saved in a file. Because of the non-commutativity of classical alpha blending, this produces contradicting visualizations of the same underlying data set, so-called "hallucinators". In this paper, we therefore present line weaver, a novel visualization technique for dense line charts. Using an importance function, we developed a technique that correctly considers the blending order independent of the render order and without any prior sorting of the data. We allow for importance functions which are either explicitly given or implicitly derived from the geometric properties of the data, if no external data is available. The importance can then be applied globally to entire lines, or locally per pixel which simultaneously supports various types of user interaction. Finally, we discuss the potential of our contribution based on different synthetic and real-world data sets where classic or naive approaches would fail.

Prerequisites

The project uses CMake and relies on the following libraries:

The project uses vcpkg (https://vcpkg.io) for dependency management, so this should take care of everything. Please follow the instructions on the vcpkg website (https://vcpkg.io/en/getting-started.html) to set it up for your environment. When using visual studio, make sure to install the vcpkg integration using

vcpkg integrate install

There is a manifest file called vcpkg.json in the project root folder. When building with CMake for the first time, all dependencies should be downloaded and installed automatically.

Building

If you are using Visual Studio, you can use its integrated CMake support to build and run the project.

When instead building from the command line, run the following commands from the project root folder:

mkdir build
cd build
cmake ..

After this, you can compile the debug or release versions of the project using

cmake --build --config Debug

and/or

cmake --build --config Release

After building, the executables will be available in the ./bin folder.

Running

To correctly locate shaders and other resources (which are stored in the ./res folder), the program requires the current working directory to be the project root folder. A launch configuration file for Visual Studio (./.vs/launch.vs.json) that takes care of this is included, just select lineweaver as a startup item in the toolbar. When running from the command line, make sure that you are in the project root folder and execute

./bin/lineweaver

Usage

After starting the program, choose either Trajectory or Series as "File Mode". In case of Trajectory, click on the first "Browse" button to select a data file located in the ./dat folder. If desired, select the corresponding importance file using the "Browse" button below for importances. These are located in the ./dat/importance folder and have the same name as the trajectory data set, including the suffix -importance. In case of Series as "File Mode", use the first "Browse" button to select a data file located in the ./data/series folder instead. These, however, do not require additional importance files as importance is derived implicitly.

License

Copyright (c) 2021, Thomas Trautner. Released under the GPLv3 License. Please visite https://vis.uib.no/team/thomas-trautner/ for contact information.