All posts by admin

ndtv Demo Video & Workshop

Video Demo

I’m experimenting with using a screencast as a way to give tutorials and publicize new features we release as part of the statnet packages. As my first attempt, here is a quick YouTube intro / demo to some of the key features in the ndtv (Network Dynamic Temporal Visualization) package

If you find this format useful, please let me know and maybe I’ll do videos for the full tutorial with more technical explanations. Its definitely a good challenge to talk about things to imaginary people :-)

Workshop

I’m going to be giving an (obviously much longer) workshop on the ndtv, networkDynamic and tsna packages at the 2016 INSNA ‘Sunbelt’ social networks conference in Newport Beach (Los Angeles) California

Managing Dynamic Network Data in statnet:
Animations, Data Structures and Temporal SNA

Session Time: Tuesday April 5th, 3:00pm-6:00pm
Workshop Program

Foundation Center’s network funding maps

The Foundation Center (recently?) released a neat web application that provides interactive visualization tools for their database of grant funding. It contains a “Constellation” interactive network view of grant-making relationships.

mapsfoundationcenterSmall

The network map is SVG, built with D3.js, and has a well designed interface with features for refining queries, and flipping between charts, tables, maps, and network views of the same data. Most of the graphic elements can be clicked on to bring up a popup with a more detailed breakdown. The network map is very reminiscent of Angels of the Right (2011), except that they seem to give access to all of the current IRS 990 data (not just conservative foundations) and provide lots of categorization and geocoding as well. Although it seems to be a paid subscription service (with a free trial?), much of the data for the US appears to be available to play with via democracy.foundationcenter.org Note that although the tool does provide CSV data downlaod for some views, this is not open data. The Terms of Service prohibit scraping, bulk download and web redistribution.

One criticism I have — common to many sites using the D3.js network template is — why should the user wait to watch the network layout process in real time? It can be performed so much more quickly in the background, without eating my entire CPU updating the browser DOM when I’m trying to type the next query. Also, I’m not sure exactly what some of the network stats are calculating (sometimes it reports number of connections per vertex < 1, which doesn't seem possible for these networks).

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

Thou shalt not spread false information

Ran into this on a friend’s bookshelf a while back. Great advice. I think that

“Thou shalt not spread false information. Thou shalt not pervert information to enhance profit or status.”

and

“Do not exchange your best understanding of how things work for cheap social consensus.”

are particularly relevant guidelines for people working in information design. Should there be a Hippocratic Oath for data visualization? :-)
Continue reading Thou shalt not spread false information

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.

Picturing Polarized Posts on Palestine

Quite fittingly, a friend shared an article with interesting network images showing the extremely divided semantic and social spaces with respect to the war on Gaza.

The network images in the article were apparently constructed from Facebook, Instagram, and Twitter data. Many of the images look like they were made with Gephi, but unfortunately the author doesn’t give sources for them.

While I think much of the semantic separation and “micro-propaganda” discussed in the article pre-dates social media, it is good to remember that our perception of events is increasingly filtered through our network of friends and amplified by story selection algorithms controlled by others. And it is perhaps comforting to see in these images some explanation for why otherwise seemingly sensible people can hold such shockingly different viewpoints: we are likely building our understanding of events from completely different sets of “facts” and narratives.

Oligrapher from LittleSis

The folks at LittleSis (the opposite of Big Brother) have just released a nice tool for creating “powermaps” using the relationships between entities in their database. Powermaps are an informal term for a type of network graph illustrating various types of relationships between (often multiple types) of people or institutions

The maps are quite lovely, built as zoomable SVG objects embedded in the webpage with elegant highlighting and mouse-over label reveals. The entities on screen supporting clicking through to the corresponding page in the LittleSis database. From peeking at the Oiligrapher source code on github it appears that the tool makes heavy use of d3 (of course) and some of the force-directed network layout code. They cite Mark Lombardi as a strong influence for the visual aesthetic. Not sure about speed/performance issues on larger networks, but this seems like a great tool for these types of relatively sparse illustrations.

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.