Make maps of world voting patterns, such as UN General Assembly votes.
  • Python 90.8%
  • Shell 9.2%
Find a file
2025-07-25 20:24:22 +02:00
.github/workflows Update softprops/action-gh-release action to v2 (#13) 2024-03-11 12:11:33 +01:00
examples fix africa image after zimbabwe country name update 2025-07-25 20:24:22 +02:00
kaartmaker fix Zimbabwe's country title 2025-07-25 20:01:28 +02:00
.gitignore add CI/CD to automatically push to pypi, update deps, and add geojson 2024-02-13 09:55:19 +01:00
download_geojson.py Add script to download and convert shapefiles to GeoJSON #7 (#10) 2024-02-19 12:22:57 +01:00
download_geojson.sh palestine updates and updates for size of framing 2024-02-01 16:14:36 +01:00
LICENSE Initial commit 2024-01-30 19:15:47 +01:00
poetry.lock Update dependency rich to v13.9.2 (#31) 2024-10-20 20:14:23 +02:00
pyproject.toml bump version 2025-07-25 20:12:17 +02:00
README.md Update README.md - update available scripts for downloading geojson 2024-02-19 12:32:41 +01:00
renovate.json Add renovate.json 2024-01-30 18:16:07 +00:00

Kaartmaker

Make world and regional labeled maps based on voting. Most commonly used for representing UN General Assembly votes.

kaartmaker -C ./kaartmaker/datasets/UN_general_assembly/russia_ceasefire/world_ukraine_votes.csv -t "UNGA vote on ceasefire in Ukraine" -s "gadebate.un.org"

Map of world Ukraine votes

kaartmaker -C ./kaartmaker/datasets/UN_general_assembly/israel_ceasefire/world_palestine_votes.csv -t "UNGA on Ceasefire in Gaza" -s "gadebate.un.org" -r world

Map of world Gaza votes

kaartmaker -C ./kaartmaker/datasets/UN_general_assembly/israel_ceasefire/world_palestine_votes.csv -t "UNGA on Ceasefire in Gaza" -s "gadebate.un.org" -r europe

Map of Europe Gaza votes

kaartmaker -C ./kaartmaker/datasets/UN_general_assembly/russia_ceasefire/world_ukraine_votes.csv -t "UNGA vote on ceasefire in Ukraine" -s "gadebate.un.org" -r europe

Map of Europe Ukraine votes

If you'd like to see more examples, please check them out here.

Features

  • Use your own csv datasets to generate maps for the world, or specific regions

  • Generate geojson files for specific regions with your vote data :)

  • Colors are colorblind friendly, selected from here can also be reversed for vote types

  • Use sovereignty (default) or subunits to get more granularity on countries e.g. Scotland, North Ireland, Wales, and Isle of Man distinguished from the United Kingdom

Installation

Prereqs

We recommend using pipx to install kaartmaker into an isolated python environment.

pipx install kaartmaker

Install with pip

This will break your system packages on Debian.

pip install kaartmaker --break-system-packages

Clone the repo and cd into the root directory of the repo, then run:

# install kaartmaker
poetry install

# open a virtual env and then you can run kaartmaker
poetry shell

How To

kaartmaker --help

SVG showing the full help text when you run kaartmaker --help

Donwload your geojson data

Maps (sovereignty, units, subunits, and disputed areas) can be downloaded from: https://www.naturalearthdata.com/downloads/10m-cultural-vectors/10m-admin-0-details/

You can also download geojson files with the download_geojson.sh or download_geojson.py scripts in this repo.

Using a comma separated list (CSV) file

To use kaartmaker, you'll need to provide a CSV file with columns called NAME_EN and VOTE. Valid votes are YES|NO or AGAINST|ABSTENTION|IN FAVOR Example when documenting :

NAME_EN,VOTE
Brazil,IN FAVOR
Czechia,AGAINST
Germany,ABSTENTION

status

Mostly stable, but happy to take a look at Issues and Pull Requests :)

Please star the repo if you find it interesting!