Atanas K. Stefanov

Tile cartograms (tilegrams) of baseline parameters in Bulgarian regions


I did not know about cartograms until very recently. Very briefly: cartograms are charts that area-scale real geographic objects to some positive quantity related to those objects (e.g. population or GDP). Cartograms can be thought of as pie charts that try to retain the shape of said objects. They struck me for their simplicity and ease of interpretation relative to their pie-chart counterpats, which I have a strong prejudice against. I was particularly intrigued by tile cartograms, and the implementation of Pitch Interactive Inc impressed me quite a bit, so I began thinking if I can customise it to my liking. I was interested in generating similar tilegrams for Bulgarian regions (provinces). This led me to clone their repository and add Bulgarian geodata together with some datasources which I grabbed from the National Statistical Institute (NSI) in Bulgaria. By “grabbed” I mean transcribed by my own hand. All errors due to this are my own; and this blogpost is not after perfect accuracy.

The original implementation allows to set a certain resolution for the hexagonal tiles (hexes); we will denote it RR. Higher RR means more hexes, so the unit of RR must contain hex1\text{hex}^{1}. I am, however, usually more interested in what is contained within a hex, which the inverse resolution R1R^{-1} alludes to. To illustrate this, we can generate the most basic case, where the hex-area of regions is just their geographic area. Let each hex symbolise 50km250\,\text{km}^2, i.e. R1=50km2.hex1R^{-1}=50\,\text{km}^2.\text{hex}^{-1}. This gives:



Against Blank Map of the Provinces of Bulgaria, Wikimedia:

Or, if you prefer without region annotations:



Using a ten times lower resolution (R1=500km2.hex1R^{-1}=500\,\text{km}^2.\text{hex}^{-1}) yields:



Lower resolutions give more simplistic maps. A trade-off arises between clarity and geographical accuracy. While the algorithm scales regions, it also tries to preserve the shape of regions (and perhaps of the whole country). Therefore, a small amount of hexes must get (unfairly) exchanged between regions. Shape distortions should be more likely to take place at lower resolutions, or when a region is scaled very disproportionately relative to its geographical area.

Against the area tilegram:



Population as of 31.12.2023. by district, municipality, place of residence and sex. NSI, Bulgaria.

Let us now demonstrate the true power of cartograms. Hexes will now represent the total resident population in Bulgaria in 2023. Setting R1=1000hex1R^{-1}=1000\,\text{hex}^{-1}:



About a fifth of the Bulgarian population resides in Sofia-grad. This is София-град, lit. “Sofia-city”. Sofia is the capital of Bulgaria, and has its own administrative region. Not to be confused with Sofia-oblast (София-област, lit. “Sofia-region”), which is meant to capture Sofia’s surroundings and satellite cities. This region therefore becomes very inflated (pink blob in middle), at the expense of other regions that have not as many residents, which consequently shrink. Such regions are Vidin (top left; blue) and some southernmost provinces. This tilegram displays the disproportionality of the Bulgarian population in a very simple and accessible way — and it allows us to assign (albeit symbolically) a specific number of people for each tile (1000).

Against the area tilegram:



GDP and GVA by economic sectors and regions with data for 2022*. NSI, Bulgaria.

We can play this game with any physical quantity that could be otherwise represented as a pie chart among regions. For example, we can represent the Bulgarian GDP in 2022, R1=108BGN.hex1R^{-1}=10^{8}\,\text{BGN}.\text{hex}^{-1}:



This tilegram is similar to the population-scaled one, but is even more Sofia-dominant — to the point where neighbouring, less prominent regions lose their continuity. The algorithm begins to struggle to scale regions appropriately and at the same time to preserve their shape.

Against the area tilegram:



Activity of accommodation establishments by statistical zones, statistical regions and districts in 2023¹. NSI, Bulgaria.

I finish this tilegram demonstration by showing three last charts without interpretation. Revenue from overnight stays in 2023, R1=106BGN.hex1R^{-1}=10^{6}\,\text{BGN}.\text{hex}^{-1}:

Against the area tilegram:



Crimes by case outcome in 2023 by statistical zones, statistical regions and districts¹. NSI, Bulgaria.

Crimes in 2023, including suspended sentences, acquittals, terminations and discharges, R1=30hex1R^{-1}=30\,\text{hex}^{-1}:

Against the area tilegram:



Household waste by statistical regions and districts. NSI, Bulgaria.

Generated household waste in 2022, R1=5×103kg.hex1R^{-1}=5\times 10^{3}\,\text{kg}.\text{hex}^{-1}: