GSoC: Cartograms in Grapher #1288
Replies: 2 comments 13 replies
-
@larsyencken @danyx23 Hi, I'm currently working on handling large spatial data (Thesis), and this project as a whole is intriguing. From what I understand, the gist of the project is to create data points/tiles for a given data set (Population is one such example) and plot a world map (Typically, an actual word map has variable density tiles across countries, and we flatten that while ensuring the visual representation of the map stays.) I'm super interested in the proposal and would love to work on it. Some of the questions I have:
Edited |
Beta Was this translation helpful? Give feedback.
-
Hiya @larsyencken and @danyx23 ! I just saw your proposal on Google summer of Code and was extremely excited to see cartograms on there. I am extremely familiar with cartograms; in fact, they’re pretty much all I work on. In your proposal above, you referenced a package, namely cartogrampy. It turns out, the package uses the Gastner-Newman cartogram algorithm. I actually currently work with Professor Gastner, the co-creator of said algorithm, and I have made significant contributions to the latest implementation of the algorithm at cartogram-cpp. Me and a few other students are currently trying to refine his algorithm in code; The aforementioned repository is a complete re-write of Professor Gastner’s improved algorithm, which was initially written in C, and somewhat unstructured. Thus, we transitioned to C++. Since I have written a significant portion of the code that makes up the repository, I am extremely familiar with how it works. In fact, I was quite inspired by your mosaic cartograms, and decided to quickly hotfix a new branch with an initial code draft for creating them(mosaic-cartogram). I was already able to produce some results that the average eye might find pleasing. The algorithm is not restricted to the world map (although that is probably what you’re most interested in), or to a particular metric (like population). One advantage to such a method is that we could apply whatever map projection on our starting map, and some may lead to more pleasing results than others. I noticed that you both are from Germany and Switzerland, and thus decided to quickly see what the algorithm could produce for those countries, as well as the world, at the moment. Here is the result: All of these images (the unprojected mosaic and the final cartogram) were produced by the branch I just committed to. Although it may look pleasing, there is still loads to be improved. In fact, the world map is current not entirely correct and has a relatively high area error (what the area should be vs. what it actually is). Further, smaller countries are not represented on the map at all, instead of being represented as triangles (as with your map). These are changes that I am currently working on anyway, since representing very small areas is a challenge on non-mosaic cartograms as well. Thus, I would love to work with you all over the summer to make something specific to your use (perhaps, even a fork of cartogram-cpp). Other than cartograms, a main reason that I'd like to work with you, and as a Google Summer of Code contributor at all, is to become more familiar with the open source world. The aforementioned repository, although technically open source, is much more of a research project rather than something maintained by an open source foundation. Thus, I would like to get an inner look at how open source foundations truly function, and hopefully meet some wonderful people along the way. I'd love to chat, if you'd be open to a short zoom call! |
Beta Was this translation helpful? Give feedback.
-
DIFFICULTY: HARD, SIZE: 350 HOURS
Overview
Our World in Data has the mission to educate about the world’s most important problems and one of the most important means of this mission is to use chloropleth maps to give readers a quick and intuitive overview of important indicators in all the countries of the world.
Unfortunately, this very useful and popular view suffers from the fact that the size of a country is of course unrelated to its population size. For many important problems, the size of the population happens to be one of the most important aspects of a problem: if malnutrition is high in a very large country then this is in many ways much worse than if malnutrition is high in a tiny country. But since human visual perception associates area with importance, choropleth maps are often a suboptimal tool for communicating the scale of various problems.
One alternative that would be very useful for the kind of communication we do is mosaic cartograms. This is a visualisation form that is a hybrid between a map and an area chart scaled by population. To help fast visual processing, standardised tiles corresponding to a fixed number of people are laid out in such a way that countries try to retain their shape but they are now sized to the number of tiles proportional to their population. This gives a quick visual reading that is proportional to the population of a country, but at the same time allows viewers to easily orient themselves by laying out countries roughly where they usually can be found on a map.
Creating a layout for the world's countries using the population for a single year can be done manually, leading to good results when it comes to resembling continent/country shapes. But to be truly useful for us we would need to be able to plot such cartograms for arbitrary years given our population dataset, which is why we are looking for an algorithm to create such maps. One complication of doing this for arbitrary years is that it would be desirable to try to minimise visual jumps between years as the population grows at different rates in different countries.
Expected outcomes
Related links:
Potential mentors
Feel free to ask any questions you like below!
Beta Was this translation helpful? Give feedback.
All reactions