Color Legend Panel

About

The goal of this project is to re-implementation of the paper ColorMapND: A Data-Driven Approach and Tool for Mapping Multivariate Data to Color using Python (Flask) and D3.js.
The interactive visualization includes the following three main components described in the paper.

🌈

Color Legend Panel

🌍

Pseudo-Colored Plot

🎨

Channel View

💡

Interactive Features

Color Legend Panel

The circular interactive multivariate color mapping display (ICD).
The attributes are arranged on the ICD's boundary in terms of their similarity.
The color of multivariate data sample is then obtained via generalized barycentric coordinate interpolation.

The ring spacing check box allows users to choose the attribute layout scheme along the ring.

  • Uniformly spaced
  • Correlation-optimized

The bar charts visualize the true values for each attribute of a selected point from the ICD.

Ring Spacing

Pseudo-Colored Plot

Shows the colorized image and what locations pixels correlated and what the dominant factors are.

Also easy to spot which countries have similar profiles, which could be difficult to do with individual maps.

Ring Spacing

Channel View

Small multiple view of all attribute / channel images, each colorized by the color selected by their respective node points in the ICD's outer ring.

Allows users to focus on one attribute at a time.

Ring Spacing

Interactive Features

Small multiple view of all attribute / channel images, each colorized by the color selected by their respective node points in the ICD's outer ring.

Allows users to focus on one attribute at a time.

  • Zoom in/out

Users can zoom in/out the map with mouse scroll or double click LMB.

  • Mouse hovering

Outline the selected data point or country. The Channel View displays the values when the user hovers over a country.

  • Data Linking

Clicking a data point (the white dot on the Color Legend Panel) highlights the corresponding country and displays the values for each attribute for that country. Users can also click a country on the map to highlight the corresponding data point and display the bar chart.

Data linking

Implementation

Technologies
• Flask
• Python
• D3.js
Backend - Data processing
Data clean up & Normalization
• Specify the features to use for the application
• Normalize the data values
• Match the country names with GeoJSON
Mapping the Attributes to the ICD Boundary
• Determine the order of the attributes by solving a Hamiltonian Cycle Problem (HCP)
• Determine the spacing of the attributes (Equal and Optimized)
Embedding the Data Points Into the ICD
• Implement the optimized version of RadViz using the iterative GBC plot error reduction algorithm and force directed GBC plot adjustment algorithm
• Extend the RadViz polygon to a circle
• Look up the color to get the CIE HCL color
Frontend - Visualization
Color Legend Panel
• Create a disk in the CIE HCL color space
• Plot the attributes on the disk boundary and fill them with their respective colors
• Plot all data points on a separate disk using the calculated location points
• Draw a bar chart to display the actual color for each attribute
• Create a ring-spacing option that allows selection between equal and optimized spacing
• Link the data points on the ICD with the pseudo-colored plot to highlight the corresponding selection and display detailed information

Pseudo Colored Plot
• Draw a map using thhe world-topo.json file
• Color each country using the computed HCL color
• Add a tooltip that displays the actual attribute values for the selected country when the country is clicked on the map
• Add zoom-in and zoom-out functionality

Channel View
• Display each attribute on its own choropleth map using the respective color for that attribute
• Add a tooltip to show the value of the corresponding attribute on the selected map
• Add zoom-in and zoom-out functionality

Sources

💻

Source Code

Github
📝

Code Documentation

PDF
📖

Original Paper

ColorMapND: A Data-Driven Approach and Tool for Mapping Multivariate Data to Color

Shenghui Cheng; Wei Xu; Klaus Mueller

Article

Improving the fidelity of contextual data layouts using a Generalized Barycentric Coordinates framework

Shenghui Cheng; Klaus Mueller

Article
🗐

Dataset - World Happiness Report 2021

Website

How to run

1. (Optional) Create virtual environment

2. Install dependencies

  • pip install -r requirements.txt

3. Start the server

  • python app.py

4. Open in browser

  • http://127.0.0.1:5000