A web-based system for taxonomy labeling and comparison of old visualization images.
You can find a live demo here for taxonomy labeling. The functions related to the server are disabled in the live demo. To use the full-fledged version, please follow the instructions in How to Use.
This repository is structured as:
./client-label
: The interface for taxonomy labeling../client-compare
: The interface for taxonomy comparison../scripts
: The scripts for one-time data preprocessing../server
: The server shared by./client-label
and./client-compare
for serving image resource and computation services.
Warning
The following instructions for setting up the interfaces assume the annotated dataset is oldvis/dataset. If you want to use the interfaces to annotate other images datasets, you will need to
- ensure the image metadata matches the structure of visualizations.json and replace the metadata at
./client-compare/src/assets/visualizations.json
and./client-label/src/assets/visualizations.json
- store the images at
./server/static/images/
- setup the cache files (with
./scripts/setup_cache.py
)
- Setup the server resources and launch the server (see details at ./server/README.md).
- Launch the
taxonomy labeling interface
(see details at ./client-label/README.md).
- Setup the server resources and launch the server (see details at ./server/README.md).
- Launch the
taxonomy comparison interface
(see details at ./client-compare/README.md).
The following are the steps to reproduce Figure 2 of the paper "VisTaxa: Developing a Taxonomy of Historical Visualizations".
- clone this repository https://github.com/oldvis/image-taxonomy-labeler.
- Setup the server: Within the cloned repository:
- Under directory
./server
, executepoetry install
to install dependencies (assuming Python 3.10 and Poetry 2.x.x have been installed). - Under directory
./server/static
, executepoetry run python setup_samples.py
.- Note: This script will download 400 images, unzip
./server/static/embeddings.zip
, and unzip./server/static/thumbnails.zip
. Note that the image downloading will take some time and occupy in total around 400MB storage.
- Note: This script will download 400 images, unzip
- Under directory
./server
, executepoetry run python server.py
to launch the server (make sure port5001
has not been occupied before launching the server).
- Under directory
- Setup the client: Within the cloned repository, enter the directory
./client-label
. Under this directory:- Execute
pnpm install
to install dependencies (assuming node.js and pnpm have been installed). - Execute
pnpm run dev
to launch the dev server. - A webpage with the URL
http://localhost:3333/
should automatically pop up in the browser, which corresponds to the interface screenshot in Figure 2 in the paper.
- Execute
- Upload the annotations:
- Manually download the annotations stored at https://github.com/oldvis/image-taxonomy/blob/main/annotations.json. (There is no restriction on the filename when storing the downloaded annotations.)
- Click the "upload" button at the bottom right of the interface hosted at
http://localhost:3333/
, and upload the downloaded annotations. The interface will then look similar to Figure 2 in the paper.- Note: After loading the annotations, it may take seconds for all the images to be rendered in the browser.
- Note: The state of the interface will not look exactly the same as Figure 2 in the paper, because the screenshot in Figure 2 was taken when the annotation process was ongoing, while the the annotations stored at https://github.com/oldvis/image-taxonomy/blob/main/annotations.json are the final annotations.
If you use this repository in a scientific publication, we would appreciate citations to the following paper:
@Article{Zhang2025VisTaxa,
author = {Zhang, Yu and Chen, Xinyue and Zheng, Weili and Guo, Yuhan and Li, Guozheng and Chen, Siming and Yuan, Xiaoru},
title = {{VisTaxa}: Developing a Taxonomy of Historical Visualizations},
doi = {10.1109/TVCG.2025.3567132},
volume = {},
number = {},
pages = {1--11},
journal = {IEEE Transactions on Visualization and Computer Graphics},
publisher = {IEEE},
year = {2025},
}