查看所有相邻区域的颜色,选取未用过的颜色:
def setColor(adj, clist, theReg):
cclist= clist.copy()
if adj[theReg].get("color", None):
# 有颜色,正常
return True
else:
有可用的颜色,逐个试验:
for reg in adj[theReg]['naber']:
c= adj[reg].get("color", None)
# print(reg, c)
if c in cclist:
cclist.remove(c)
if len(cclist)>0:
检测周边所有相邻的区域是否可以正常填色:
random.shuffle(cclist)
for color in cclist:
adj[theReg]['color']= color
can= True
只考虑未填色的地方:
regList= []
for reg in adj[theReg]['naber']:
if adj[reg].get("color", None):
有区域不能正常填色,则无须继续尝试:
continue
regList.append(reg)
can= setColor(adj, clist, reg)
if not can:
格式调整:
with open('ProvNaber.txt', 'r', encoding='utf-8') as f1:
provadj= eval(f1.read())
常用地图色调:
provColor={}
for prov in provadj:
provColor[prov]= {}
provColor[prov]['naber']= provadj[prov].copy()
进行填色:
rgblist=[
(255,253,218),
(223,237,214),
(255,210,227),
(220,217,234),
(255,228,195),
]
clist= [rgb(x[0], x[1], x[2]) for x in rgblist]
省界地图填色显示:
ret= setColor(provColor, clist, '北京')
if not ret:
exit()