A general framework and library for visual piling/stacking.
Piling.js currently supports visual piling of images, matrices, and SVG out of the box, but can easily be customized with your own render.
npm install piling.js pixi.js
PixiJS is the underlying WebGL rendering engine. It's not pre-bundled in case your application needs to use PixiJS elsewhere.
Optionally, if you want to lay out piles by more than two attributes you have to install UMAP as follows.
npm install umap-js
Let's pile some natural images
import createPilingJs, { createImageRenderer } from 'piling.js';
// define your items
const items = [{ src: 'http://example.com/my-fancy-photo.png' }, ...];
// instantiate a matching the data type of your items
const itemRenderer = createImageRenderer();
const piling = createPilingJs(
document.getElementById('demo'), // dom element in which piling.js will be rendered
{
// Mandatory: add the items and corresponding renderer
items,
itemRenderer,
// Optional: configure the view specification
columns: 4
}
);
Et voilà 🎉
Install
git clone https://github.com/flekschas/piling.js
cd piling.js
npm install
Start the Development Server
npm start
@article{lekschas2021generic,
author = {Fritz Lekschas and Xinyi Zhou and Wei Chen and Nils Gehlenborg and Benjamin Bach and Hanspeter Pfister},
title = {A Generic Framework and Library for Exploration of Small Multiples through Interactive Piling},
publisher = {IEEE},
journal = {IEEE Transactions on Visualization and Computer Graphics},
series = {InfoVis ’20},
year = {2021},
month = {2},
day = {1},
volume = {27},
number = {2},
pages = {358-368},
doi = {10.1109/TVCG.2020.3028948},
}