python baseMap 实现 地图着色问题
题目描述
已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色
总数最少。
算法思想(不知道这样做对不对看着结果倒是没问题)
区域颜色从第一个颜色开始涂,满足相邻区域颜色不相同条件。
结果
代码
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt # 化图
from matplotlib.patches import Polygon # 上色
import time# 字典代替邻接矩阵
str = {'河北省': ['内蒙古自治区', '山西省', '山东省', '北京市', '天津市', '辽宁省'],'山东省': ['河北省', '天津市', '山西省', '湖南省', '江苏省'],'安徽省': ['山东省', '湖南省', '湖北省', '江西省', '浙江省', '江苏省'],'江苏省': ['山东省', '安徽省', '上海市', '浙江省'],'上海市': ['江苏省', '浙江省'],'浙江省': ['上海市', '安徽省', '江西省', '福建省', '江苏省'],'江西省': ['安徽省', '湖北省', '湖南省', '广东省', '福建省', '浙江省'],'福建省': ['浙江省', '江西省', '广东省'],'黑龙江省': ['内蒙古自治区', '吉林省'],'吉林省': ['内蒙古自治区', '黑龙江省'],'辽宁省': ['内蒙古自治区', '吉林省', '河北省'],'北京市': ['河北省', '天津市'],'天津市': ['河北省', '北京市'],'海南省': [],'台湾省': [],'澳门特别行政区': [],'香港特别行政区': [],'新疆维吾尔自治区': ['西藏自治区', '青海省', '甘肃省'],'西藏自治区': ['新疆维吾尔自治区', '青海省', '四川省', '云南省'],'青海省': ['西藏自治区', '新疆维吾尔自治区', '甘肃省', '四川省'],'甘肃省': ['新疆维吾尔自治区', '青海省', '四川省', '内蒙古自治区', '陕西省', '宁夏回族自治区'],'四川省': ['西藏自治区', '青海省', '甘肃省', '陕西省', '重庆市', '贵州省', '云南省'],'云南省': ['四川省', '贵州省', '广西壮族自治区'],'内蒙古自治区': ['甘肃省', '宁夏回族自治区', '陕西省', '山西省', '河北省', '吉林省', '辽宁省', '黑龙江省'],'宁夏回族自治区': ['陕西省', '内蒙古自治区', '甘肃省'],'陕西省': ['宁夏回族自治区', '甘肃省', '四川省', '内蒙古自治区', '重庆市', '湖北省', '湖南省', '山西省'],'重庆市': ['陕西省', '四川省', '贵州省', '湖南省', '湖北省'],'贵州省': ['重庆市', '四川省', '云南省', '广西壮族自治区', '湖南省'],'广西壮族自治区': ['云南省', '贵州省', '湖南省', '广东省'],'山西省': ['内蒙古自治区', '陕西省', '河南省', '山东省', '河北省'],'河南省': ['山西省', '陕西省', '湖北省', '安徽省', '山东省'],'湖北省': ['河南省', '重庆市', '陕西省', '湖南省', '江西省', '安徽省'],'湖南省': ['湖北省', '重庆市', '贵州省', '广西壮族自治区', '广东省', '江西省', '安徽省'],'广东省': ['湖南省', '江西省', '福建省', '广西壮族自治区']}# 画中国地图
m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)
m.readshapefile('shapefiles/china', 'china', drawbounds=True)# 得到中国的各个省,使用set不会重复
locatName = set()
for i in m.china_info:name = i['OWNER']locatName.add(name.replace("\x00", ""))# 将set转换为list方便处理
nameList = list(locatName)
print(nameList)
print(len(nameList))# 初始化每个省的颜色为0
nameDict = dict()
for i in nameList:nameDict[i] = 0
print(nameDict)
print(len(nameDict))# 得到 s 省相邻地区的颜色列表
def getColorList(s):colorList = []for i in str[s]:colorList.append(nameDict[i])return colorList# 给 seg 地区 画 k 颜色
ax = plt.gca()def pColor(seg, k):colorStr = ""if k == 1:colorStr = "r"elif k == 2:colorStr = "y"elif k == 3:colorStr = "b"elif k == 4:colorStr = "g"elif k == 5:colorStr = "pink"poly = Polygon(seg, facecolor=colorStr) # r, y, b, g, pinkax.add_patch(poly)###############################
# 开始上色
name = ""
colorList = []
c = 0
for seg, mName in zip(m.china, m.china_info):ttName = mName['OWNER']tName = ttName.replace("\x00", "")if tName != name:colorList = getColorList(tName)for i in range(1, 6): # 从低到高上色if i not in colorList: # 不存在就上色c = ibreakpColor(seg, c)nameDict[tName] = cname = tName
plt.show()
python baseMap 实现 地图着色问题相关推荐
- python basemap 在地图标点
接上一篇的代码 原网址:http://matplotlib.org/basemap/users/mapcoords.html#converting-to-and-from-map-projection ...
- python中国地图代码 上色_如何让使用python绘制中国地图并给特定地区上色?
在使用python Basemap绘制地图并给特定地区染色的过程中,有些地区无法上色.请问各位大神有无解决方法? 我是准备给14个地区染色,但是能成功上色的只有6个省和直辖市. 请问这是Basemap ...
- 【Python实用工具】速来!!一篇文章十分钟教你如何使用Python第三方库basemap进行地图绘制
basemap地图绘制 basemap地图绘制 1 basemap的使用 1.1 basemap安装 1.2 basemap使用 1.3 缩放区域与绘图 2 basemap综合示例 2.1 美国人口分 ...
- Cartopy画地图第七天(python画浮雕地图和比例尺)
Cartopy画地图第七天(python画浮雕地图和比例尺) 本文利用了python.cartopy进行了浮雕地图的绘制,同时还画了比例尺. 先上图为敬,一些图例符号不对请不要介意,随便表示的 第一. ...
- 第4章【思考与练习2】数据文件high-speed rail.csv存放着世界各国高速铁路的情况。对世界各国高铁的数据进行绘图分析。使用Basemap绘制地图及使用Pyecharts绘制地图。
目录 P84思考与练习2 方法一:使用Basemap绘制地图 方法二:使用Pyecharts绘制地图 P84思考与练习2 1.叙述各类图形的特点.适合展示的数据特性,以及在数据探索阶段的用途. 函数绘 ...
- python画地球代码_用Python制作中国地图、地球平面图及球形图
绘制地图在python中主要用到的 basemap 库,这个库是 matplotlib 库中一个用于在 Python 中绘制地图上的 2D 数据的工具包. 安装库: 1.安装 geos 库:Pytho ...
- 用Python制作中国地图、地球平面图及球形图
绘制地图在python中主要用到的 basemap 库,这个库是 matplotlib 库中一个用于在 Python 中绘制地图上的 2D 数据的工具包. 首先安装库: 1.安装 geos 库:Pyt ...
- [Python] Basemap入坑手册
Basemap入坑手册 2021-07-19 换了电脑装basemap报错后一直没更新,今天本来想怎么着也给他装上,才发现这个项目从2016年就换主了,basemap被维护到2020年. 但是现在都2 ...
- python画树叶-手把手|如何用Python绘制JS地图?
原标题:手把手|如何用Python绘制JS地图? 关于转载授授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+文章标题+转载",申请 ...
最新文章
- android edittext限制字节_android EditText输入限制
- win 2008 控制共享文件夹大小_Windows 10 无法访问共享的解决办法大全
- 破解sina新浪邮箱密码
- 第8步 第2剑客 mybatis plugin 第三剑客 page helper csdn每天最多发多少文章 是20篇,刚刚才试了。2014
- matlab求解常微分方程组/传染病模型并绘制SIR曲线
- 日记——2019-03-12
- Mysql数据库——sql语句进阶
- 疑似三星Galaxy S11入网:搭载骁龙865处理器+支持25W快充
- gdb 的使用 problem solution
- 保持头脑清醒的窍门2/13
- 我的世界php motd,ColorMOTD 彩色字体插件 | 我的世界 | MC世界侠
- 轻松实现微信、QQ防撤回
- EV https证书申请与续费
- 面试中的Singleton
- 名人(国家)·经典语录——向 先 辈 低 头, 向 文 明 低 头
- word中图片为嵌入式格式时显示不全_word嵌入图片显示不全,教您word插入图片显示不全怎么办...
- HTML简单的个人博客网站 DIV学生网页设计作品 dreamweaver作业静态HTML网页设计模板 个人网页作业制作
- 如何设置QTableWideget和行高和列宽
- QQ播放器更新界面设计
- 计算机专业概况,计算机专业概况介绍