Оригинальную крутую визуальную карту можно сделать с помощью Python!

Python
Оригинальную крутую визуальную карту можно сделать с помощью Python!

Для визуальных карт,PyechartsРаньше он чаще всего использовался Сяо Ф.

Должны быть какие-то сайты, готовые инструменты, не нужно набирать код.

Статья о визуализации мобильного телефона 5G также является картой, созданной с помощью Pyecharts~

И дляMatplotlib, в настоящее время Сяо Ф. не использовал его для рисования карты.

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

Python+Selenium+Matplotlib для визуализации карты Китая.

Данные карты исходят от Министерства гражданских дел, что является достоверным и надежным.

адрес проекта:

git ee.com/machine selection/M…

Поскольку Сяо Ф. раньше использовал «GitHub» для сохранения кода, он вообще не регистрировал «Gitee».

Авторский код и связанные с ним данные загружаются в «Gitee», что требует регистрации и скачивания.

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

CURL — это командная строка, работающая с синтаксисом URL.инструмент для передачи файлов.

# 在仓库地址(https://gitee.com/jixuanfan/Map-of-China)
# 后面拼接/repository/archive/master.zip

# 下载本例项目代码
curl -o data.zip  https://gitee.com/jixuanfan/Map-of-China/repository/archive/master.zip

Виндовс возможно нужно будет установить, это еще честно зарегистрировать аккаунт, а потом скачать код проекта.

Mac и Linux должны иметь встроенный CURL, просто используйте команду напрямую без установки.

/ 01 / Сбор картографических данных

Get_Map, основанный на поисковом роботе Python, в основном использует Selenium + обычный.

SeleniumЭто инструмент автоматизированного тестирования для тестирования веб-сайтов. Здесь мы в основном используем его для имитации операций браузера для получения картографических данных.

Учебники по установке доступны в Интернете.Рекомендуется использовать Google Chrome.Файл драйвера и версия браузера должны совпадать.

Получите два адреса интерфейса для картографических данных.

# 首页URL,获取当前所有行政区划的代码
http://xzqh.mca.gov.cn/map

# 查询URL,获取国家或省市的具体地图数据
http://xzqh.mca.gov.cn/defaultQuery?

Во-первых, чтобы получитьКод административной единицы, минимум должен быть на уровне округа.

Для рисования различных типов карт необходимы следующие функции сбора данных.

Административный код не ясен, просто проверьте его онлайн~

import Map_of_China as Map

# 创建获取地图数据对象
M=Map.Get_Map()

# 获取首页全国各省的地图数据
M.Get_country()

# 获取一组省份内各地级行政区划的数据
M.Get_provinces([32,43])

# 自动获取全国尚未获取的省份数据
M.Get_provinces_auto()

# 获取一组地级市内各县级行政区划的数据
M.Get_cities([3201,3203])

# 自动获取某个省尚未获取的县级行政区划数据
M.Get_cities_auto(32)

# 获取全国所有县级行政区划的数据(合并在一张地图中)
M.Get_country_county()

Данные в основном включают форму, цвет формы, контур формы, текст, положение текста, форму точки метки, положение точки метки и т. д.

Конкретный код сканирования, анализ данных и соответствующие параметры функций см.Map_of_China.pyфайл известен.

/ 02 / Отображение данных карты

Draw_Map рисует карты на основе Matplotlib.

01. Нарисуйте контур административного деления на уровне провинций/префектур/уездов.

import Map_of_China as Map

# 创建获取地图数据对象
M = Map.Get_Map()
# 创建绘制地图对象
D = Map.Draw_Map()


# #获取首页全国各省的地图数据
M.Get_country()
# 江苏地图
D.Draw_single_shape('Data/Country/320000.txt', LC=[116, 169, 221],
                                   FC=[96, 139, 219], BC='w', lw=2, title='江苏轮廓',
                                   img_path='jiansu.jpg')


# 获取各省份内各地级行政区划的数据
M.Get_provinces([32])
# 南京地图
D.Draw_single_shape('Data/Province/32-江苏/320100.txt', LC='k', FC=None, 
                                   title='南京轮廓', img_path='nanjing.jpg')

Получены следующие результаты.

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

02. Нарисуйте карту страны

import Map_of_China as Map

# 创建获取地图数据对象
M = Map.Get_Map()
# 创建绘制地图对象
D = Map.Draw_Map()


# 绘制全国地图
D.Draw_country(FC=True, img_path='china.jpg', arg={'provName': False,
                         'city_name': True, 'city_pos': True, 'sea': False}, title='中国地图')

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

Получены следующие результаты.

схема окраски,По умолчанию установлено соответствие цвета на официальном сайте МВД..

Некоторые параметры совпадают с контурным графиком, но добавлены некоторые новые параметры.

НапримерКарта Южно-Китайского моря, отображать название провинции, цвет названия провинции и т. д.

03. Нарисуйте карту провинции

import Map_of_China as Map

# 创建获取地图数据对象
M = Map.Get_Map()
# 获取广东省份内各地级行政区划的数据
M.Get_provinces([44])

# 创建绘制地图对象
D = Map.Draw_Map()

# 绘制广东省地图
D.Draw_province('广东', FC=True, LC='w', arg={'other': True, 'city_pos': True, 'city_name': True},
                            img_path='guangdong.jpg')

Для провинциальных данных предыдущая маленькая буква F сканирует только провинцию Цзянсу, поэтому здесь нам нужно сканировать картографические данные провинции Гуандун.

Получены следующие результаты.

Параметры, соответствующие функции рисования карты провинции:

код может быть двухзначным кодом или названием провинции, здесь он установлен на «Гуандун».

Также функция содержит параметры для отрисовки тепловой карты, data и by_val.

в аргументедля другого установлено значение Falseвремя, производительностьНе показывать соседние провинции или городаКарта, параметр по умолчанию True, который отображается.

04. Карта административных единиц уровня префектуры

import Map_of_China as Map

# 创建获取地图数据对象
M = Map.Get_Map()
# 获取南京、深圳行政区划的数据
M.Get_cities([3201, 4403])

# 创建绘制地图对象
D = Map.Draw_Map()

# 南京地图(默认样式)
D.Draw_city('3201', img_path='nanjing_city.jpg')

# 深圳地图(自定义样式)
D.Draw_city('深圳', FC=True, LC='w', arg={'other': True, 'city_pos': True, 'city_name': True},
                     img_path='shenzhen.jpg')

Получены следующие результаты.

Код здесь представляет собой четырехзначный код города уровня префектуры.

05. Нарисуйте тепловую карту

Залейте разные области разными цветами в зависимости от размера значения, но, к сожалению, легенда отсутствует.

import Map_of_China as Map

# 创建获取地图数据对象
M = Map.Get_Map()
# 创建绘制地图对象
D = Map.Draw_Map()

# 文件路径
src = 'Example/GDP-2018.csv'
# 按数据的相对大小(排名)显示
D.Show_data(src, by_val=False, arg={'default_color': [0.6, 0.6, 0.6], 'sea': False},
                     img_path='gdp.jpg', title='2018年各省市GDP')

Получены следующие результаты.

Конкретный формат содержимого файла CSV выглядит следующим образом.

Первый столбец — это название или код области, а второй столбец — это значение.

Модуль обработки данных находится в файле Map_of_China.py.

Обычно следует выбирать параметр by_val, абсолютный размер и относительный размер.абсолютный размеротображается таким образом.

Это авторская тепловая карта, легенды нет, жду обновления~

# 省级数据
D.Show_data('Example/江苏人口2018.txt', '32', by_val=True, title='江苏人口2018',
            img_path='jiangsu_2018_1.jpg')
# 配置地图中的样式
D.Show_data('Example/江苏人口2018.txt', '32', by_val=True, LC='w', title='江苏人口2018',
            arg={'city_name': True, 'city_pos': True, 'other': True},
            img_path='jiangsu_2018_2.jpg')

Также можно использовать данные в формате TXT.

06. Нарисуйте пузырьковую диаграмму

# 气泡图
D.Bubble(src='Example/GDP-2018.csv', title='2018年各省市GDP', img_path='GDP_bubble.png')

Получены следующие результаты.

Цвет пузырька по умолчанию желтый, параметры можно настроить.

Обнаружил, что это похоже на Pyecharts, я полагаю, что оно модифицируетсяцвет карты,Шрифт и положение текстаПосле этого карта будет выглядеть лучше!

Однако из-за нехватки времени Сяо Ф расскажет об этом в следующем выпуске~

Есть еще несколько функций, подождите, пока большой парень обновится~

Тысячи рек и гор всегда влюблены.Можешь нажать "Нравится"?