OUseful.Info, the blog…

Trying to find useful things to do with emerging technologies in open education

Visualising New York Times Article API Tag Graphs Using d3.js

Picking up on Tinkering with the Guardian Platform API – Tag Signals, here’s a variant of the same thing using the New York Times Article Search API.

As with the Guardian OpenPlatform demo, the idea is to look up recent articles containing a particular search term, find the tag(s) used to describe the articles, and then graph them. The idea behind this approach is to get a quick snapshot of how the search target is represented, or positioned, in this case, by the New York Times.

Here is the code. The main differences compared to the Guardian API gist are as follows:

- a hacked recipe for getting several paged results back; I really need to sort this out properly, just as I need to generalise the code so it will work with either the Guardian or the NYT API, but that’s for another day now…

- the use of NetworkX as a way of representing the undirected tag-tag graph;

- the use of the NetworkX D3 helper library (networkx-d3) to generate a JSON output file that works with the d3.js force directed layout library.

Note that the D3 Python library generates a vanilla force directed layout diagram. In the end, I just grabbed the tiny bit of code that loads the JSON data into a D3 network, and then used it along with the code behind the rather more beautiful network layout used for this Mobile Patent Suits visualisation.

Here’s a snapshot of the result of a search for recent articles on the phrase Gates Foundation:

At this point, it’s probably worth pointing out that the Python script generates the graph file, and then the d3.js library generates the graph visualisation within a web browser. There is no human hand (other than force layout parameter setting) involved in the layout. I guess with the tweaking of a few parameters, maybe juggling the force layout parameters a little more, I could get an even clearer layout. It might also be worth trying to find a way of sizing, or at least colouring, the nodes according to degree (or even better, weighted degree?) I also need to find a way, of possible, of representing the weight of edges if the D3 Python library actually exports this (or if it exports multiple edges between the same two nodes).

Anyway, for an hour or so’s tinkering, it’s quite a neat little recipe to be able to add to my toolkit. Here’s how it works again: Python script calls NYT Article Search API and grabs articles based on a search term. Grab the tags used to describe each article and build up a graph using NetworkX that connects any and all tags that are mentioned on the same article. Dump the graph from its NetworkX representation as a JSON file using the D3 library, then use the D3 Patent Suits layout recipe to render it in the browser :-)

Now all I have to do is find out how I can grab an SVG dump of the network from a browser into a shareable file…

Written by Tony Hirst

October 17, 2011 at 1:05 pm

3 Responses

Subscribe to comments with RSS.

  1. [...] amongst many other things, started Tinkering with the Guardian Platform API – Tag Signals and Visualising New York Times Article API Tag Graphs Using d3.js.Like any fake PhD candidate it’s important to follow the work of your supervisor, after all they [...]

  2. [...] but which generated something – more tweaking requiredIn a recent post by Tony on Visualising New York Times Article API Tag Graphs Using d3.js he highlighted how there is NetworkX D3 helper library (networkx-d3) for the NetworkX visualisation [...]

  3. There is different ways of grabbing an SVG screen dump with D3. I use this simple code: http://bl.ocks.org/1263606
    Here is a discussion on this topic on the D3 Google Group:
    https://groups.google.com/d/topic/d3-js/RnORDkLeS-Q/discussion

    Chris

    October 30, 2011 at 6:43 am


Comments are closed.

Follow

Get every new post delivered to your Inbox.

Join 768 other followers

%d bloggers like this: