Category Archives: research interests

new ndtv release: 0.7

..and continuing in the thread of long-overdue R package updates, we’ve got a new ndtv version out as well.

Peek into the time prism

The package release adds some “whiteboard candy”: 2.5D orthogonal projection of networks in time along a z axis. For lack of a better name, I’ve dubbed it a timePrism (let me know if you find a pre- existing better name). Think of viewing all of the slices from a filmstrip from an angle. Probably hard to follow for large networks (or lots of time slices) but nice for illustrating concepts in temporal networks when you want to convey time and structure and can accept some loss of detail. Especially with the ability to include splines connecting specific vertices for highlighting trajectories.


library(ndtv)
data(toy_epi_sim)  
timePrism(toy_epi_sim,
           orientation=c('z','y','x'), # swap axes
           angle=40,
           spline.v=c(7, 29, 36, 70, 82, 96),  # hilite the infected 
           spline.col='red',
           spline.lwd=2,
           box=FALSE,
           planes=TRUE,  # draw a semi-transparent 'plane' under each net
           vertex.col='ndtvcol'  # use pre-created infection color scheme)

timePrism
Continue reading new ndtv release: 0.7

tsna : Tools for Temporal Social Network Analysis

We finally got the alpha release of the new tsna package up on CRAN! The goal is for the package to be a repository of algorithms and techniques for doing Social Network Analysis on longitudinal networks stored as networkDynamic objects. It includes:

The package vignette has lots more details.

As a quick example, the code below extracts a forward temporal path (think “what is the earliest journey a message could take from vertex 10 to each vertex in the network while respecting edge timing”) and plots it as a transmission tree, including the transmission time for each edge:


# load the libraries
library(tsna)
library(ndtv)
# load a dynamic network example
data("moodyContactSim")
# compute the forward temporal path from vertex 10 at time 0
v10path< -tPath(moodyContactSim,10)
# plotting trees still a little complicated, 
# but with Graphviz and ndtv we can do it
plot(v10path,
    coord=network.layout.animate.Graphviz(as.network(v10path),
          layout.par = list(gv.engine='dot')),
    edge.label.col='blue',
    main='earliest fwd path transmission times from vertex 10')

v10_fwd_path

Create in-browser interactive network animations from R with ndtv 0.6.1!

We are releasing an update to the R ndtv package for doing temporal visualizations of dynamic networks. The biggest new feature in this release is the ability to render networks as interactive SVG animations in a web browser with a single command via the ndtv-d3 javascript library (authored by Greg Michalec and myself for statnet) .

By default you can

  • play forwards and backwards, jump to any point in the timeline
  • zoom (mousewheel or pinch)
  • pan (drag)
  • display tooltips (click on a vertex or edge)
  • highlight connections (double-click a vertex)
  • change the playback speed (menu in upper right)

The example above can be produced in your local web browser with the R code below:

library(ndtv)
data(short.stergm.sim)
render.d3movie(short.stergm.sim)

Much of it is customizable. If you want to get under the hood, I’ve created a short vignette for ndtv-d3 with additional details on how to configure the the network plot (it generally follows the conventions of plot.network and render.animation) and how to include the results rmarkdown documents or export for embedding in a blog post like this one.

There are a number of updates and improvements elsewhere in the package. For example, the proximity.timeline function can now color by vertex attributes.

This image shows a trivial simulated epidemic process on a dynamic network produced by EpiModel. Horizontal splines correspond to the vertices of the network, with red color indicating infection status. The vertical positions are adjust to place closely-connected vertices in proximity, so you can see how the components group and break apart over time. The network snapshots below the timeline illustrate three time points for comparison. See the package vignette for example code.
proxTimeineWithInf

If you will be at the 2015 INSNA conference, we will be doing a workshop session on Tuesday June 23 with in-depth tutorials of the package.

Stasi SNA

ProPublica published an interesting example of a hand-drawn sociogram / mind-map of the relationships of a person of interested to the former East German secret police.

The graphic shows forty-six connections, linking a target to various people (an “aunt,” “Operational Case Jentzsch,” presumably Bernd Jentzsch, an East German poet who defected to the West in 1976), places (“church”), and meetings (“by post, by phone, meeting in Hungary”).

The article links to a version of the document that provides english translations on mouseover.

Reminds me of similar diagrams I’ve seen in police files related to Black Panther activists.

Multiple modes of flying flows

While trawling for interesting dynamic network datasets, I bumped into one about U.S. airport passenger traffic aggregated by Zachary Neal.. I lifted this image from his slides (p.9):
airportTransitNets

These data contain annual U.S. air traffic flow networks from 1993 to 2011. They were constructed from Bureau of Transportation Statistics’ Origin and Destination Surveys using the AIRNET program

What I thought was cool is that he constructs the network in two ways: one is the passenger flow between specific airports, the other is total passenger movement between metropolitan areas (if I’m reading his data correctly). He claims the first approach yields a hub-spoke network driven by airline hubs, while the second highlights travel between dense population areas. Both are derived from the same data. I think it shows how important it is to think carefully about how to construct networks that correspond well to the phenomena being studied. Are we interested in relative traffic between cities, or in the the actual flow of people (via roads, airports) between the cities? In hindsight, its obvious that these are very different networks (the first one for example should be nearly fully connected, right?).

I’m assuming that there is some thresholding going on in these images, ’cause the dataset he provides seems to have lots more edges in it.

Relationship Timelines

I finally had a chance to pull together a bunch of interesting timeline examples–mostly about the U.S. Congress. Although several of these are about networks, the primary features being visualized are changes in group structure and membership over time. Should these be called “alluvial diagrams”, “stream graphs” “Sankey charts”, “phase diagrams”, “cluster timelines”?

James Moody and Peter Mucha’s Portriat of Political Party Polarization (in the new Network Science journal) plots the network modularity score of structurally-equivalent voting clusters in the Senate co-voting network as they change over time. The lines show the movement of Senators between clusters over time.
moodyCongressPolarization

The figure maps this dynamic coalition network, one two-year Congress at a time. Nodes indicate structurally equivalent positions, scaled by number of Senators and shaded by their voter agreement level. In each period there are two “party loyalist” positions, anchored on the y-axis proportional to the modularity score. The y-position of other nodes—usually individuals—is based on the balance of their votes relative to these anchors. Positions are linked over time by identity arcs connecting each person to themselves over time, labeled to trace individual careers (the widths of arcs between aggregate positions indicate the number of people moving between them over time).

Continue reading Relationship Timelines

ndtv animation “live” at London Science Musuem

Dr. Michael White wrote to let me know about an exhibit / performance at a science museum that used a network animation produced with the ndtv package.

… we used QR codes and tablets to monitor the spread of an infectious disease throughout people attending the museum, and perform dynamic network visualizations in real time.

The article is a little vague about exactly how this worked, but it sounds like the visitors were given tokens to pass to each other, a few of which were labeled “infected”, and at various points they were scanned in by staff and the data used to update the animation of the transmission network? The animation is included in the article. Cool to see the software used in real life!