题目描述

已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色
总数最少。

算法思想(不知道这样做对不对看着结果倒是没问题)

区域颜色从第一个颜色开始涂,满足相邻区域颜色不相同条件。

结果

代码

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 实现 地图着色问题相关推荐

  1. python basemap 在地图标点

    接上一篇的代码 原网址:http://matplotlib.org/basemap/users/mapcoords.html#converting-to-and-from-map-projection ...

  2. python中国地图代码 上色_如何让使用python绘制中国地图并给特定地区上色?

    在使用python Basemap绘制地图并给特定地区染色的过程中,有些地区无法上色.请问各位大神有无解决方法? 我是准备给14个地区染色,但是能成功上色的只有6个省和直辖市. 请问这是Basemap ...

  3. 【Python实用工具】速来!!一篇文章十分钟教你如何使用Python第三方库basemap进行地图绘制

    basemap地图绘制 basemap地图绘制 1 basemap的使用 1.1 basemap安装 1.2 basemap使用 1.3 缩放区域与绘图 2 basemap综合示例 2.1 美国人口分 ...

  4. Cartopy画地图第七天(python画浮雕地图和比例尺)

    Cartopy画地图第七天(python画浮雕地图和比例尺) 本文利用了python.cartopy进行了浮雕地图的绘制,同时还画了比例尺. 先上图为敬,一些图例符号不对请不要介意,随便表示的 第一. ...

  5. 第4章【思考与练习2】数据文件high-speed rail.csv存放着世界各国高速铁路的情况。对世界各国高铁的数据进行绘图分析。使用Basemap绘制地图及使用Pyecharts绘制地图。

    目录 P84思考与练习2 方法一:使用Basemap绘制地图 方法二:使用Pyecharts绘制地图 P84思考与练习2 1.叙述各类图形的特点.适合展示的数据特性,以及在数据探索阶段的用途. 函数绘 ...

  6. python画地球代码_用Python制作中国地图、地球平面图及球形图

    绘制地图在python中主要用到的 basemap 库,这个库是 matplotlib 库中一个用于在 Python 中绘制地图上的 2D 数据的工具包. 安装库: 1.安装 geos 库:Pytho ...

  7. 用Python制作中国地图、地球平面图及球形图

    绘制地图在python中主要用到的 basemap 库,这个库是 matplotlib 库中一个用于在 Python 中绘制地图上的 2D 数据的工具包. 首先安装库: 1.安装 geos 库:Pyt ...

  8. [Python] Basemap入坑手册

    Basemap入坑手册 2021-07-19 换了电脑装basemap报错后一直没更新,今天本来想怎么着也给他装上,才发现这个项目从2016年就换主了,basemap被维护到2020年. 但是现在都2 ...

  9. python画树叶-手把手|如何用Python绘制JS地图?

    原标题:手把手|如何用Python绘制JS地图? 关于转载授授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+文章标题+转载",申请 ...

最新文章

  1. android edittext限制字节_android EditText输入限制
  2. win 2008 控制共享文件夹大小_Windows 10 无法访问共享的解决办法大全
  3. 破解sina新浪邮箱密码
  4. 第8步 第2剑客 mybatis plugin 第三剑客 page helper csdn每天最多发多少文章 是20篇,刚刚才试了。2014
  5. matlab求解常微分方程组/传染病模型并绘制SIR曲线
  6. 日记——2019-03-12
  7. Mysql数据库——sql语句进阶
  8. 疑似三星Galaxy S11入网:搭载骁龙865处理器+支持25W快充
  9. gdb 的使用 problem solution
  10. 保持头脑清醒的窍门2/13
  11. 我的世界php motd,ColorMOTD 彩色字体插件 | 我的世界 | MC世界侠
  12. 轻松实现微信、QQ防撤回
  13. EV https证书申请与续费
  14. 面试中的Singleton
  15. 名人(国家)·经典语录——向 先 辈 低 头, 向 文 明 低 头
  16. word中图片为嵌入式格式时显示不全_word嵌入图片显示不全,教您word插入图片显示不全怎么办...
  17. HTML简单的个人博客网站 DIV学生网页设计作品 dreamweaver作业静态HTML网页设计模板 个人网页作业制作
  18. 如何设置QTableWideget和行高和列宽
  19. QQ播放器更新界面设计
  20. 计算机专业概况,计算机专业概况介绍

热门文章

  1. 学计算机比较出名的技校,中国最出名的8大技校 蓝翔技校仅排第三
  2. c语言中十六进制数zm,C语言中十六进制数
  3. Tensorflow catdog-checkpoint
  4. 手机输入法大战将在M-Market展开
  5. c语言程序运行一次之后继续运行,怎样让电脑在合上后继续运行
  6. 软件设计师——软件过程基础知识
  7. followpins
  8. AVL树(艾薇儿树)
  9. NASA’ WIST数据下载网站(包括最新公布ASTER G-Dem数据)
  10. 安装MY SQL教程