Small MultiPiles:
Piling Time to Explore Temporal Patterns in Dynamic Networks

Benjamin Bach, Nathalie Henry Riche, Tim Dwyer, Tara Madhyastha, Jean-Daniel Fekete, Tom Grabowski

Watch Read Cite Mail

See. Pile. Explore.

MultiPiles is a visualization to explore time-series of dense, weighted networks and is based on the physical analogy of piling adjacency ma- trices, each one representing a single temporal snapshot. While auto- matic or manual piling lets us scale to networks with hundreds of tem- poral snapshots, we provide various visual encodings and interaction techniques to create piles, order matrices, and explore piles.

Quick start

If you are familiar with the general concept of MultiPiles, this section gives you a quick introduction into the interactions.

1. Upload your data. The website redirects to the visualization.

2. Use the piling slider to automatically create piles.

3. Mouse over the matrix stack above each pile to browse matrices in the pile.

4. Use drag and drop, and lasso selection to create piles. Click on matrices in the stack to split a pile.

5. Drop down menus on the top of the window lets you change matrix row ordering, and the information shown in each cover matrix of the piles.

6. The pile menu (hovering a pile) gives you individual options for every pile.

Manual / Reference

This section provides an in-depth explanation of the different visualizations and interactions in MultiPiles.

Data Format:

Your data must be in UTF formatted json. Below is a simple data example with 3 time steps and 4 nodes. Every time step is encoded as an adjacency matrix with positive values.

{"nodes": [
    "times": [
        {"name": 1900, "matrix": [
            [ 0,  1, 0.3, 0.1],
            [ 1,  0, 0.5, 0.1],
            [0.3, 0.5,  0,  0],
            [0.1, 0.1,  0,  0]
        {"name": 1901, "matrix": [
            [ 0, 0.9, 0.2, 0.3],
            [0.9,  0, 0.6, 0.3],
            [0.2, 0.6,  0,  0],
            [0.3, 0.3,  0,  0]
        {"name": 1902, "matrix": [
            [ 0, 0.6, 0.1, 0.5],
            [0.6,  0, 0.7, 0.5],
            [0.1, 0.7,  0,  0],
            [0.5, 0.5,  0,  0]

Interface components

MultiPiles consists of a menu bar (top), a timeline (middle), a piling slider (left) and a piles plot (bottom):

Piles plot: this component is the most important in MultiPiles and shows matrices as well as piles. Each pile is represented by a matrix ("Cover matrix"). The stack above each matrix represents the individual time steps within that pile. For exmaple, the first pile in the above figure has roughly the double the amount of time steps than the second pile. Below each pile, there are three numbers: the first is a label indicating the order of this pile (1st, 2nd, etc). The second number (actually a number pair) indicates which time steps are contained in this time step (e.g. 1-25 in the first pile.). The last number indicates the exact number of time steps in the pile.

Timeline: the timeline is a heatmap where columns represent time steps (same as matrices in the piles plot) and rows correspond to nodes in the networks. Darkness inside the timeline indicates the overall connectivity (weighted degree) of a node (row) at any timepoint (column). Dark cells mean high connectivity to all other regions, bright cells mean less connectivity.

Piling slider: this slider allows to quickly set a threshold to pile time steps according their similarity.

Menu: this menu contains general commands to undo/redo any piling operation, to enable/disable piling animations and to set the size of matrices in the matrix plot.

Cover Matrix Encoding

MultPiles provides 5 visual encodings for cover matrices (matrix representing each pile). The type of encoding can be changed via the drop down menu from the top menu, or individually for each pile from the respective pile context menu.

Mean: each matrix cell encodes the mean weight for this connection within this pile. White means 0, black means the maximal value.

Trend: each matrix cell encodes whether the strengh for this connection increases (blue) or decreases (red) throughout the pile.

Variability: each matrix cell encodes how strong the connection strength varies during the period represented by the pile. White cells means no or small standart deviation in edge weight over time, dark blue refers to a high standart deviation over time.

Adjacent difference: each matrix cell encodes the difference in mean to the previous pile. Blue means increase in connection strength, red means decrease.

Direct difference: hovering over a pile, each matrix cell in the other piles shows the difference in mean to the hovered pile. In the above figure, all piles show their direct difference to pile 5. Blue means increase in connection strenght, red means decrease.


1. Pile creation and destruction

Automatic Piling: move the piling slider up to yield less pile with more time steps. Move the slider down to obtain a finer piling with more piles but less time steps in each pile.

Piling method: The two piling methods currently implemented in MultiPiles are sequential and clustered. You can select the method below the piling slider. The magic behind each method is explained in the paper.

Combine Piles:

  • Lasso select piles.
  • Drag and drop a pile to its previous pile. Only adjecent piles can be piled (!).
  • Click into the gap between two piles to either a) pile all matrices between the gap and the most recent pile, or b) to combine the two previous piles.
  • In the timeline view, click on the first time step of a pile (column) to combine this pile with the previous one.

Split piles: from the matrix previews (stack above matrix that indicates pile size) click onto the matrix (timestep) where you want split. Alternatively, click on a time step in the timeline view to split that pile.

Depile: you can depile any pile with the Depile command from the pile context menu.

2. Pile Exploration

Preview: to obtain a quick preview of all the matrices within one pile, without destroying (depiling) it, keep the mouse pressed on the pile. Releasing the mouse, snaps matrices back into the pile.

Flip though: hovering over the stack above each pile (there is no stack, if the pile contains only a single matrix), flips though all of the matrices within this pile. Think of this techniques as a video navigation slider. Fascinating! Alternatively, you can hover the timeslices directly in the timeline (same effect, still fascinating!).

Show node labels: as you hover over a cell in a matrix, press shift to show the related nodes' labels.

3. Matrix Ordering

Multipiles provides three ways to reorder rows and columns in matrices and piles, revealing patterns in your data. The ordering method can be set for all piles using the dropdown menu, or individually for each pile from the respective pile context menu:

  • Data: (default) rows and colums are not reordered but appear as indicated by the order of nodes in the JSON data file. All matrices obtain the same ordering.
  • Global: rows and columns are ordered to try to be optimal across all matrices. All matrices obtain the same ordering. As an effect of this global optimzation, piles with more structure and clusters, can indicate more frequent states. Noisy piles indicate less frequent states.
  • Local: optimzes row and colum ordering for the time steps within this pile only.

Propagte ordering: an individual ordering that is optimal for one matrix can be propagated to all other piles by clicking on the corresponding label in the pile context menu (hover pile).

4. Filtering

Zoom: the global zoom, i.e. size of matrices, can be adjusted with the Zoom slider on the top of the window.

Fliter: in order to focus on a subnetwork (e.g. cluster), drag over the contained nodes in the node list at the timeline. Selected nodes become blue and matrices get updated. To select any filtered node, select a single node from the node list. Once nodes are filered, any automatic piling takes only those nodes into account.

Icons made by Freepik from is licensed by CC BY 3.0