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.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
data-processing
frontend
LICENSE
README.md

README.md

#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.

##Objective

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 http://www.davidkelly.ie/projects/personae

##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.

###Usage

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

####Backend

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/personae.py file.

Running python personae.py 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:

grunt

...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.