Учебник по Matplotlib Поднимите карты вашей страны на новый уровень

Учебник по Matplotlib

Учебник по Matplotlib

Как рисовать красивые карты с помощью Python и Matplotlib

Карта, созданная автором

Да, я создал карту выше с помощью Matplotlib, и я покажу вам, как это сделать в этом учебнике.

Идея заключается в создании многоразовой и гибкой функции, которая позволяет мне мгновенно рисовать красивую карту любой области.

С помощью такой функции я могу сэкономить массу времени, когда мне нужно создавать диаграммы или информационно-графические изображения с географической компонентой.

Я также хочу показать силу многоразового кода, так как многие программисты, работающие с визуализацией данных, забывают о таких лучших практиках.

Этот учебник содержит каждую отдельную строку кода, которая вам понадобится, чтобы создать карту Африки, показанную выше.

Давайте начнем.

Шаг 1: Загрузка геоданных

Единственное, что вам нужно сделать перед началом учебника, это загрузить геоданные отсюда:

World Boundaries GeoJSON — очень высокое разрешение

Это официальные границы от Всемирного банка и общедоступный набор данных, который вы можете использовать как угодно.

Шаг 2: Импортирование библиотек

Как обычно, мы начинаем с импорта необходимых библиотек, и нам не нужно много. Поскольку у нас есть географические данные, мы хотим использовать geopandas, чтобы сделать построение графиков как можно проще.

import numpy as npimport pandas as pdimport seaborn as snsimport geopandas as gpdimport matplotlib.pyplot as pltimport matplotlib.patheffects as PathEffectsfrom matplotlib.patches import Polygon

Один импорт, который вы, возможно, еще не видели, это PathEffe. Я буду использовать его, чтобы создать границу вокруг меток страны позже.

Шаг 3: Создание стиля seaborn

Перед построением графика я всегда создаю стиль seaborn, чтобы получить последовательный вид. Здесь я определяю только background_color, font_family и text_color. Я устанавливаю фон в светло-голубой цвет, чтобы представить океан.

font_family = "sans"background_color = "#D4F1F4"text_color = "#040303"sns.set_style({    "axes.facecolor": background_color…