Emography
A multi-touch enabled map to explore and discover patterns of how people in the world are feeling at the moment.
The Emography application is an interactive experimental visualization prototype, intended to run on large multi-touch screens. It analyzes twitter-data by specified geo-locations, and projects the results as a number of donut charts onto a world map. One chart for each specified location makes it possible to compare places and look for emotional patterns, based on personal preferences or for example world events.
Background
This project started with an introduction to the (excellent) project "San Fransisco crimespotting", mapping of reported crimes onto the map of San Fransisco, for the important cause of open data and for letting people find patterns and draw their own conclusions. Our question to this is: "Is it possible to put this data into context by also displaying how many people who is NOT victims of crime? How many people did NOT get robbed and murdered at that location?"
The concept of Emography started out as a complimentary crimespotting map. A "happy-map". We assumed that where people were not victims of crime, they would be happy. Though in the present state we have made the decision not focus on one particular feeling, but rather the six basic feelings of happiness, sadness, fear, anger, disgust and surprise, defined by Paul Ekman.
Current iteration
Data use
The data used is tweets (micro-blog-posts from Twitter), found via Twitter search, and picked by geographic coordinates (longitude and latitude). A tweet without specified longitude and latitude coordinates can still be included in the Twitter search result if the Twitter-user has entered a city in his/her profile (read more about this in the Twitter search API).
13 cities, with coordinates, are hardcoded into Emography and data for each city is requested from Twitter once on start up, and when the application is running one request (data for one city) is made each 30 second, due to server limitations set by Twitter. Each request includes longitude and latitude on the concerned city, the radius for the area to scan for tweets (currently set to 15km), and number of tweets to be returned. The amount of tweets to take into account can be further experimented with and evaluated for increased accuracy of the analysis, but is in this version set to ten, which seemed to give up-to-date results and be enough information for analysis through Synesketch Java API.
Synesketch is a Java API, written by Uroš Krčadinac, that analyzes and calculate the occurrence of six basic feelings (mentioned above). Read more about the API here. The tweets requested from Twitter is interpreted and given a value, which we visualize in the shape of a donut chart. Each feeling is shown in relative size compared to the others.
Above: Tweets from Cairo
Below: Results in the donut chart
Look and feel
The project is meant to focus on the feelings of people, so we try to visualize this in an emotional way (with colors) while still trying to keep the possibility to compare. To not take focus of the donut charts we tried to keep the map as desaturated as possible (see out style at cloudmade here). For easier detection of cities available for exploration, we marked the chosen ones with a black and white dot.
The colors representing the different emotions is chosen partly by association but also just to make the colors distinguishable from each other.
Above: Map style
Below: Yellow = Happiness, Blue = Sadness, Black = Fear, Red = Anger, Green = Disgust, Pink = Surprise
The shape of the donut chart, or "loupes", sprung from an initial illusion that each emotion had a counter-emotion and could be placed on opposite sides of a matrix, shaping a hexagon. We felt that the metaphor of a loupe, or magnifying glass was appropriate since you were exploring and examining certain parts and topics of the world. As the metaphor grew stronger, the hexagon shape also developed into the more fluid circle, which also gives the impression of a delimiter on the map. To try to emphasize the "fluid" nature of the circle and the emotions we added a transition animation for each time the values for a loupe changed.
Interaction
We wanted to encourage curiosity and exploration of the world map and the feelings of people of the world. So an early decision was to make the explorer move loupes around. The comparison was to be an active action, and possibly an activity for more than one person at the time. The application starts with one inactive loupe in the center of the screen. Additional loupes is created by touching and holding the screen for 0.5 seconds (for avoiding unintentional creation of loupes). Loupes can immediately be dragged to desired location and, since the data is already loaded, the loupe gives instant feedback when it detects a city. The animation between different emotional values keep the sense of real-time and presence, making the information more "alive".
Above: Active loupe over São Paulo and inactive loupe in default setting
To make it more obvious that a city was currently under the loupe, a snap-behaviour was applied to the cities. When a loupe is closing in on a city, the loupe automatically snaps to that city, changes it's chart according to the present data and also zooms in inside the loupe, displaying the road grid of that city. It is at any moment possible to move the loupe away from a city.
When a loupe is moved away from a city, it fades to it's inactive state but keeps the data of the city recently shown in that loupe. This facilitates the potential of comparing different cities with the same loupe.
Above: Comparison of London and New York
One intended effect of keeping the interface sparse on information was that we wanted to promote own speculation and spark curiosity. The Twitter feed in combination with Synesketch is indeed an unreliable source of this kind of information but for example: During the Egyptian revolution, we knew exactly what the red color (Anger) in our loupes over Cairo meant. And of course people are more sad in London, since it is raining all the time!
Suggested further development
We have many ideas on how to improve and develop the concept of the Emography. We will here list what we find are the most interesting parts.
- Pinch zoom
- When pinching a loupe, zoom in/out on map inside loupe, or resize loupe to include bigger/smaller portion of map. Also change the radius of the Twitter request accordingly. This would make it possible to explore cities in detail or get an overview of countries/areas.
Furthermore is the pinch gesture "already" a generic command for touch-screens and is therefore most likely to be expected by users of this software. - Include another source of information
- Have for example the latest news headlines scroll the top screen to spark curiosity about parts of the world. "Earthquake in Chile", "Revolution in Egypt", "President election in the USA".
- Display day/night curve
- Show local time of the day in an ambient curve (like so).
Resources
The current iteration of Emography is written in Java with Processing.
For handling of maps we make use of Till Nagels library Unfolding, and Cloudmade. Take a look at our map style here.
To analyze text and interpret emotions we use the Java API Synesketch by Uroš Krčadinac.
Data for extracting emotions is requested from Twitter Search.
Multi-touch interaction is made possible with this TUIO Processing library.
Our code is available here: Emography code (.zip)