Skip to content
A Character-Visualisation Tool for Dramatic Texts
CSS JavaScript HTML Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

#Personae - A Character-Visualisation Tool for Dramatic Texts

Submitted for the NVS Challenge, 2016 - July, 2016

Created by David Kelly, Justin Tonra and Lindsay Ann Reid at the Moore Institute, NUI Galway.


The aim of these visualisations is to use the XML files from the New Variorum Shakespeare edition of The Comedy of Errors to create a resource for exploring patterns of speeches by and mentions of characters in Shakespeare’s work. Visualising the frequency, extent, and position of dialogue relating to a particular character presents users with a simple and immediate measure of that character’s prominence within the play. The tool enables users to select and visualise individual characters’ involvement, producing a novel means of exploring large-scale structural, narrative, or character-focused patterns within the text.

See a live demo and read about the development rationale at

##Development Overview

The play-text XML is parsed using Python to extract a set of JSON files. These are used in a set of D3.js-based visualisations on the site's front-end.


Here are some instructions if you want to build the visualisations from scratch:


The Python script to process the XML relies on lxml. The data-processing/input directory contains the NVS repository files.

The default play to process is The Comedy of Errors - you can change this to The Winter's Tale by editing the play_prefix variable at the top of the data-processing/ file.

Running python in data-processing/ will output a set of JSON files to frontend/app/data. It will also output a .csv file to data-processing/output containing a count of unique <name></name>s found, should you wish to identify locations to geo-code (this isn't handled by the software).

####Front-end requirements

The front-end of the site uses D3 (v4.1.1) for data visualisation, Leaflet.js for mapping, as well as Underscore and Bootstrap (v3.3.6) (LESS).

Building the front-end depends on Grunt and Bower.

Assuming these are installed, to install the project requirements run:

npm install
bower install

To build a production version of the front-end, run:


...this will output the production files to frontend/personae/.

To serve a preview of the front-end at http://localhost:9000/, run:

grunt serve

...this will automatically open the preview site in your browser.

##Issues or Contributions

Bug fixes or suggested improvements are welcome via the issues section, or as a pull-request.

You can’t perform that action at this time.