Goal
The goal of Cuttlefish is to create visualizations that provide a more
intuitive representation of geographically distributed data with strong
diurnal patterns. The tool displays data points overlapped on the
image of a geographical map. It uses variations in height and color to show the
amplitude of the data points and a sweeping terminator to highlight
day/night changes. The image may also include a summary histogram
and/or a color legend.
Cuttlefish sums the values associated with overlapping geographic
regions that must fit into the smallest data display unit of 2 pixels
wide by 1 pixel high. Therefore, if several data points are so close
geographically that they render in the same screen position, the sum of
their values is displayed at this location. Because of this approach,
Cuttlefish only works well for values that are cumulative e.g. number
of hosts, byte counts, or packets. The tool is not appropriate for
data that are normally represented as an average or median such as
packet Round Trip Times (RTT).
Features
Cuttlefish is a configurable visualization tool. Driven by the
parameters and data in its configuration file, Cuttlefish displays:
- geographical map(s),
- color coded data drawn to specific lat/lon locations,
- a moving line showing the border between night and day,
- optional color legend,
- optional global histogram,
- a single image, a collection of temporally related images, or a combined animated GIF.
Code
-
Cuttlefish release directory
stores the current version of Cuttlefish.
-
README
outlines the file manifest and code dependencies.
-
README.config
outlines the configuration and data file format and provides a sample
configuration file. Each image or animation requires its own
unique configuration file.
Execution
While cuttlefish does recognize several command-line options, for most
images or animations, it requires only the path and name of the
configuration file.
% cuttlefish /path/to/config_file
For the complete list of command-line options, run cuttlefish with a '-h'.
Examples
The following examples show how one can use Cuttlefish to visualize
geographically distributed, time-series data characterized by fairly
strong diurnal patterns.
Traffic flowing through a Japanese ISP (click for animated version)
Hosts infected by the Witty Internet Worm
(click for animated version)