File:Workweeks-map.svg

Any autoconfirmed user can overwrite this file from the same source. Please ensure that overwrites comply with the guideline.
Category:Files allowed to be overwritten by everyone

Summary

Description
English: Countries of the world by their work-week.
 
Monday - Friday
 
Monday - Saturday
 
Sunday - Thursday
 
Sunday - Friday
 
Saturday - Thursday
 
Monday - Thursday and Saturday
 
Mixed
This map is based on https://en.wikipedia.org/w/index.php?title=Workweek_and_weekend&oldid=858023057
Date
Source Own work
Author MartinThoma

Script to create the map:

#!/usr/bin/env python

# 3rd party modules
from lxml import etree
import mpu.pd
# Also need to install pandas


def main(filename="weekend.svg"):
    mon_fri = ['Albania', 'Angola', 'Argentina', 'Armenia', 'Azerbaijan', 'Austria', 'Australia', 'Benin',
               'Belarus', 'Belgium', 'Brazil', 'Burundi', 'Bulgaria', 'Canada', 'Cambodia', 'Cameroon', 'Chile',
               'China', 'Congo, Democratic Republic of', 'Ivory Coast', 'Croatia', 'Costa Rica', 'Czech Republic',
               'Denmark', 'Dominican Republic', 'Ethiopia', 'Estonia', 'Eswatini', 'Finland', 'France', 'Gabon',
               'Gambia', 'Germany', 'Ghana', 'Greece', 'Hungary', 'Ireland', 'Italy', 'Japan', 'Kazakhstan', 'Kenya',
               'Lao People\'s Democratic Republic', 'Latvia', 'Lebanon', 'Lesotho', 'Lithuania', 'Luxembourg',
               'Madagascar', 'Malawi', 'Mali', 'Indonesia', 'United Arab Emirates',
               'Malta', 'Mauritania', 'Mongolia', 'Morocco', 'Mozambique', 'Myanmar', 'Netherlands', 'New Zealand',
               'Nigeria', 'Norway', 'Poland', 'Portugal', 'Romania', 'Russia', 'Rwanda', 'Senegal', 'Serbia',
               'Singapore', 'Slovakia', 'Spain', 'Sri Lanka', 'South Africa', 'South Korea', 'Suriname', 'Sweden',
               'Switzerland', 'Seychelles', 'Taiwan', 'Tanzania', 'Togo', 'Thailand', 'Trinidad and Tobago',
               'Tunisia', 'Turkey', 'Ukraine', 'United Kingdom', 'United States', 'Venezuela', 'Vietnam', 'Zambia',
               'Zimbabwe', 'Uzbekistan']
    mon_sat = ['Colombia', 'Bolivia', 'Equatorial Guinea', 'Honduras', 'Hong Kong', 'Mexico', 'North Korea', 'Pakistan',
               'Philippines', 'Uganda', 'India']
    sun_thu = ['Afghanistan', 'Algeria', 'Bahrain', 'Bangladesh', 'Egypt', 'Iraq', 'Israel', 'Jordan', 'Kuwait',
               'Libya', 'Maldives', 'Oman', 'Qatar', 'Saudi Arabia', 'Sudan', 'Syria', 'Yemen']
    sat_thu = ['Djibouti', 'Palestine', 'Iran', 'Somalia']
    sun_fri = ['Nepal']
    mon_thu_sat = ['Brunei Darussalam']
    mixed = ['Malaysia']

    countries = mpu.pd.countries
    countries = countries.set_index('en_name')
    country2dict = countries.to_dict('index')
    country2dict['Congo, Democratic Republic of'] = {'alpha-2': 'CD'}  # This is missing from the source dataset for some reason

    legend = [(mon_fri, '#B8D8D8'),  # gray-blue
              (mon_sat, 'orange'),
              (sun_thu, '#4F6367'),  # Dark gray
              (sat_thu, '#EB5D5D'),  # Red
              (sun_fri, '#60D838'),  # Green
              (mon_thu_sat, '#ff00ff'),  # Purple
              (mixed, '#00ffff')]  # Cyan

    colors = {}
    for collection, color in legend:
        for country in collection:
            if country in country2dict:
                code = country2dict[country]['alpha-2'].lower()
                colors[code] = color
            else:
                print('Could not find the Alpha-2 code for \'{}\' in mpu'
                      .format(country))

    tree = read_svg(filename)
    root = tree.getroot()
    for country_id in colors.keys():
        element = root.xpath('//*[@id="{}"]'.format(country_id))
        if len(element) == 1:
            element = element[0]
            element.set("style", 'fill: {};'.format(colors[country_id]))
            for el in element.getchildren():
                el.set("style", 'fill: {};'.format(colors[country_id]))
        else:
            print("Wrong length for id={}".format(country_id))
    write_svg(root)


def read_svg(filename):
    """
    Read an SVG file.

    Parameters
    ----------
    filename : str

    Returns
    -------
    tree : lxml.ElementTree
    """
    with open(filename, 'r') as f:
        tree = etree.parse(f)
    return tree


def write_svg(root, filename='weekend-auto.svg'):
    """
    Read an SVG file.

    Parameters
    ----------
    root : lxml.Element
    filename : str
    """
    etree.ElementTree(root).write(filename, pretty_print=True)


if __name__ == '__main__':
    main()

Licensing

I, the copyright holder of this work, hereby publish it under the following license:
Creative Commons CC-Zero This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication.
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.

Category:CC-Zero#Workweeks-map.svg
Category:Self-published work Category:SVG maps of the world Category:Images with Python source code Category:Working time
Category:CC-Zero Category:Files allowed to be overwritten by everyone Category:Images with Python source code Category:SVG maps of the world Category:Self-published work Category:Working time