ColorMoves is an intuitive user interface that allows a user to build complex and data-driven colormaps via a drag-and-drop approach starting with a suite of predefined colormaps. The resultant colormap can be exported for use in other visualization applications.
There are three distinct sections of the UI: (1) the input section, (2) the output section, and (3) the colormap picker section. The lower section of the interface is the input section and is the workspace for colormap assembly. The upper section of the interface is the output section; it shows the visualization with the current colormap applied. The colormap picker section acts as a toolbox for the input section, and a toggle button brings it into view. Each section is described in detail below.
Input Section – The input section is an editable histogram that shows the current colormap along the horizontal axis. A histogram of data values for the current image is integrated into the colormap. One can zoom and expand the histogram by using the mouse scroll wheel. One can move the histogram by clicking and dragging it with the left mouse button. This allows for fine tuning of narrow colormap sections. The histogram is surrounded by controls for colormap editing. On the right, the mini-colormap icon toggles the colormap “picker” view; the disk allows on to save the current colormap in JSON or XML format; the curve is a proto-type opacity tool.
To the left of the histogram, there is the pin insert tool (“I”-shaped tool), the nest insert tool (“U”-shaped tool), and the histogram resolution slider. The pin inserts a break between two sections of the histogram. Each subsection can have a colormap inserted into it. The nest creates a standalone subsection that can receive its own colormap while leaving the rest of the colormap untouched. Either can be inserted by clicking with the left mouse button to pick up either a nest or a pin and then clicking on the histogram to drop it in. A green preview line appears on both the histogram and in the data visualization to indicate the current location. An inserted pin or nest can be selected by clicking and holding with left mouse button. The location can then be adjusted or the entire insertion object can be picked up and moved into the trash can which appears when an insertion object is chosen. There is also a back/forward button to revert or redo an operation.
Output Section – The output section looks and feels like a standard image viewer. A data float PNG file can be loaded into the output section via a simple drag-and-drop mechanism. The visualization changes in real-time as the map is adjusted in the input section. The image can be moved and zoomed by dragging and scrolling with the mouse.
Colormap Picker Section – The colormap picker is similar to a traditional color picker control. It is toggled into view with the colormap icon to the right of the input section. It contains a menu of colormaps horizontally grouped into different linear and divergent options, as well as a range of discrete colors. Colormaps are introduced into the input section histogram by a simple drag-and-drop action using the left mouse button. Each colormap can also be flipped before use. Hovering over a colormap will bring up the flip tool at the left end of the colormap. Simply click to flip. New colormaps can be imported by dropping colormap files in XML format onto the colormap picker.
Individual Operations – A complex colormap customized to the data is built from the individual colormaps available in the colormap picker and by adding pins and nests to define data regions. The ability to flip, split and nest colorscales gives a user great flexibility in colormap design.
Save Image – The current image can be exported/saved via the image save button. This button appears when hovering at the bottom-center of the viewer.
Save Colormap – The current colormap can be exported via the colormap save button to the right of the input histogram. The exports options are XML or JSON format for the colormap values. Colormaps in XML form can be imported into ParaView. There is also the option to save a PNG image of the actual colormap.
Image resize buttons – The image resize buttons appear when hovering over the bottom-center of the viewer to allow the user to zoom out of the data file image to fit the screen or view the image in its original size.
Multiple Views:split screen – Multiple image files can be added to the UI to be viewed in a split screen format. Hovering at the top/side of the viewer while dragging a new image data PNG file will split the viewer screen either vertically or horizontally. Each sub-screen can be further split. This multiple view concept allows the user to assess the impact of color perhaps across time or across spatial regions. (Note that the all views must use the same data range.)
Multiple Views: cycle through images – This option allows the user to input multiple image data files by simply dragging and dropping them into the center of the viewer. The user can then cycle through them (with back/forward arrow keys) with a single image on the screen at any time. Again, this provides the ability to see how the colormap performs across time-varying data or in varying regions.
Opacity – There is now the ability to control opacity separately for each inserted colormap. This is an especially useful feature when dealing with multivariate data or when seeking to accentuate one area over another. The opacity button is in the lower right.
Colormap Cropping – Once a colorscale or colormap has been placed into an insertion region, hovering over the inserted colormap within the data histogram brings up an adjustable slider at each end. Moving the sliders causes the end of the colormap to be subsumed into its neighbor, effectively cropping the ends of the colormap. This feature is useful for cropping off the light or dark ends of a colormap to make colorscale sequences blend more smoothly.
Tool Workflow – A typical workflow for creating a customized colormap from scratch with ColorMoves consists of the following. The user starts with a default colormap over the whole data range. To create a new colormap, start by dragging one colorscale from the colormap picker.
Choose an insertion object — either a pin or a nest. Click and place the insertion object into the histogram. The green insertion object preview line highlights the location of the insertion object. Once an insertion object has been placed, another colorscale be be added to the new location(s) defined by the insertion object.
The user can change histogram resolution or zoom into the histogram or image to help identify regions of interest in the data. By dropping a nested colormap (U-shaped pin) and choosing a contrasting color for it, a reference between a part of the value range and the corresponding area of the visualization can be established. The inverse problem of identifying a value range corresponding to certain areas (pixels) in the image is easily done by moving the boundaries of the nested colormap until it surrounds those pixels. Once the value range for the area of interest has been determined, the solid color of this nested section can be replaced by a suitable colormap.
A suite of divergent colormaps is available or can be built by combining two linear colorscales. When the user is satisfied with the created colormap, it can be exported in XML or JSON format using the save-colormap button (button with disk icon).