Postmortem of my #30DayMapChallenge 2021


Same as last year, I joined the #30DayMapChallenge on Twitter again. Every day, tons of gorgeous maps leaves on the Twitter timeline, allowing me to brainstorm (aka copy) those neat cartography techniques, and incorporate some fun topics into my maps.

Every challenge / competition / assignment / whatever should end with a postmortem to remind myself what I did well and did not that good, as well as things I wanna do and tried to do. This post is some random murmurs on the behind-the-scenes, the good and the bad, reflections or footnotes of the maps I produced.

The maps

I joined 14 themes this year, one more than last year.

Day 1: Point

The first map is dedicated to a global-scale map. And the scope is chosen with purposes — a global-scale map seems easier to reach audiences worldwide, regardless of where they are living in. Though I love cities more, the audience scope of mapping one single city (esp. Hong Kong) will be too narrow.

Back to the map — it is not a tough one to make. It’s just: 1. throw a global DEM (with bathymetry data) into ArcPro; 2. use focal statistics to reduce the DEM resolution to 2 deg x 2 deg and 3. convert the DEM raster to point.

Tools used: ArcGIS Pro + Illustrator

Day 3: Polygon

Who doesn’t love paper-cut maps? And who doesn’t love animations? I wrote a post in August to remind myself how to create animations from multiple images using ffmpeg. Turns out it is a good place to store my own code.

Tools used: ArcGIS Pro + ffmpeg

Day 4: Hexagon

This is from my article on mapping the pattern of 2 major convenience stores in Hong Kong. Creating tessellation with hexagonal grids is a great thing in terms of mapping things in Hong Kong because of the extremely uneven distribution of population. The hexagon net is a great to-go kit for me to transform the data from random points to some better-looking maps.

Tools used: ArcGIS Pro + Illustrator

Day 7: Green

I have been trying to standardise the layout for maps with informative purposes (aka the maps you see in Washington Post / Economist / NYTimes / Financial Times) starting from this map. The layout has:

I took this layout (aka steal) from maps by Carl Churchill (@Cchurchili) like this one. Things and managed in a neat and rectangular way — easy to read and no need to spend too much time optimising the layout (I am already fed up with spending hours messing up the elements around to find a good-looking layout…)

A splendid, clean, ready-to-go map layout from Carl Churchill

Still, I struggled a bit when adding the overview map, and now believe it is not a good idea. Not much information is added when the overview map is just pinpointing where Hong Kong is located in the geosphere. Could anyone share your thoughts about using an overview map when the area shown is too tiny?

Tools used: QGIS + Illustrator

Day 10: Raster

My first time trying Google Earth Engine (GEE) as I seldom play with rasters. Nighttime lights data is something I would like to play with when dealing across cities. Most of the time making this map is actually figuring out how to bulk download raster datasets from GEE to my local machine.

Always remember to use the same colour scale when mapping the dataset at two different time intervals. It is such a no-brainer job with the Copy Style... function in QGIS!

Tools used: Google Earth Engine + QGIS + Illustrator

Day 11: 3D

I haven’t used rayshader much in this year, as I am focusing on 2D mapping this year. The 3D theme would be a great use case for warming up myself to mapping 3D again.

The map itself is trivial with rayshader — import the raster to R environment, then do height_shade, ray_shade and render_water. TBH I still have no idea how different shading algorithm works, and TBH I am also not that interested in going down this rabbit hole.

Tools used: R (rayshader)

Day 12: Population

The most viral map among all of them I published this year. Coincidentally, Population is also the theme I got the most likes in last year.

Seems like people loves joy plot because of its simplicity. And sometimes I struggle when I have to balance between map as art and map as infographics. Usually, I hope my maps could at least tell a story where people could know some geography trivia after looking into them. That’s why I was not pleased with just putting the population joyplot and elevation joy plot side by side.

I then tried to make the map more informative by adding the location of cities and ridges for readers to grab some random geographic knowledge of Taiwan. After some further brainstorming, I changed the storyline to “most residents in Taiwan are living along the coastline”. Is that a good storyline? maybe.

Tools used: R (ggridges) + Illustrator

Day 16: Urban/Rural

This map borrows the “ 10km city squares” idea and color scheme from Alasdair Rae (@undertheraedar). While Alasdair focuses on British cities, I cast my lights on Asian cities. Comparing urban layouts is a fun thing for urban map nerds.

The major struggle for making these layout maps is to search for the optimal line width of roads. The definition of road hierarchy (even the road network nature!) between cities could vary so much. Finding a universal width legend takes time.

Tools used: QGIS + Illustrator

Day 18: Water

I always wanna try mapping something around polar regions. After all, most of the things I am mapping are around cities.

I searched for some publicly available polar dataset and found this NY Times article on melting of Antarctica’s ice sheets. The light hillshade surrounding the land (or ice?) just catch my eyes. And I immediately decided to reserve the water theme for mapping Antarctica’s ice.

It is a great chance for me to add some label refinements in QGIS. Although I go with the ubiquitous white-halo thing, I rumbled with various options and decided that simple maybe the best.

Tools used: QGIS + Illustrator

Day 19: Islands

A late entry! I am personally proud of the overview globe produced. The Imhof-style globe adds a fascinating crisp for the Himalayas and other high-terrain areas. I am also a fan of the original teal, greyish blue color of the sea provided in the original ArcPro style.

Side-note: I failed to export the project from ArcPro as .aix and have no idea what happened. Turns out I need to reduce the dpi when exporting the basemap from 300 dpi to 150 dpi.

Tools used: ArcGIS Pro + Illustrator

Day 21: Elevation

Have to admit this map is half-baked and not satisfactory in my eyes. I wanna try the blend mode in ArcPro, yet fails to adjust the filters and blending mode to a state where both aerial basemap and visible area from the lookout point are eye-friendly to see at the same time.

Tools used: ArcGIS Pro

Day 22: Boundaries

Some urban things and Japan things again. Boundaries of cities and difficult to define, as everyone has their own way to perceive what should a city be. Even whether nature reserves should be counted inside the city is a question without a definite answer. Things get worse when it comes to metropolis and multi-cities.

I first thought about this idea when reading the List of metropolitan areas in Japan on Wikipedia. I have been questioning how large Tokyo actually is after reading how the statistical department of Japan defines the boundary of the Tokyo metropolitan area. And then goes into the rabbit hole of various definition of Greater Tokyo.

For the symbology, I tried to play with the Shapeburst fill / gradient fill for the boundaries ([thanks for this StackExchange question). Kind of old-school colour-at-edges symbology, yet powerful.

Side-note: I found the National Spatial Planning and Regional Policy Bureau of Japan has a new listing all canonical spatial data resources ( earlier last year. And this website provide a HUGE variety of data! Natural resources (lakes, river, forest, etc.), administrative boundaries, railway stations and networks, ferry routes… you name it. In the old days, I had to download data from OSM, making basemap is now much simpler with all these data.

Tools used: QGIS + Illustrator

Day 24: Historical

Yes. Another 3D vintage map. The shadings are probably not as good as those rendered using Blender.

Tools used: ArcGIS Pro

Day 26: Choropleth

When a single variable choropleth map is not enough, we play with bivariate map. Personally, I believe bivariate map shines one providing a fresh view to audiences. Two separate choropleth maps with a scatter plot may better show the trend across the unit of analysis, but choropleth maps are “too standard” — and sometimes even myself are not interested in reading the details (sorry). I deem bivariate as a wow-factor and eye candy for readers, just like the case of waffle charts.

Tools used: ArcGIS Pro + Illustrator

Day 29: NULL

I made a bad map joke and am now regretting what I have done…

Tools used: QGIS + Illustrator


I found myself becoming more confident in using QGIS this year — probably because I upgraded my MacBook Pro from the old 2013 model to the M1 chip model. Everything’s running so smooth that I don’t need to always rely on the Desktop PC for map-making.

There are many maps crafted by the gurus in the geospatial Twitter community (aka #gischat) that are much more professional than those published by me. I’d probably write another one about the favourite maps I’ve seen as Helen McKenzie did.

The thing I hope to improve most is mapping efficiency — I could easily spend an hour meaninglessly deciding whether the credits should align to left or right, as well as other trivial typesetting questions. For a real challenge, I may limit the typesetting time to 15 minutes next year.

Originally published at my blog, UrbanDataPalette (



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store