通常在有了excel表格之后导入gis一张张出图很麻烦,用pyecharts可以将这一过程快速简化。示例的可视化单元是河南省市级单元,注意这里在存储文件的时候用正则表达式实现简单的自动命名。
如果不加range_color就是默认的色带颜色,如果想要自定义,可以独立修改,也可以专门设计一个字典colors存储不同的色带颜色,然后通过自动colors[i]自动替换颜色。
from pyecharts.charts import Map
from pyecharts import options as opts
import pandas as pd
# 城市 -- 指定省的城市 xx市
df= pd.read_excel('E:/砖/河南省国土空间规划/主要人口分配指标.xlsx',sheetname = 'Sheet2')
# from Map_tables.data_tools import city, values2
city = ['郑州市', '开封市', '洛阳市', '平顶山市', '安阳市', '鹤壁市', '新乡市', '焦作市', '濮阳市', '许昌市',
'漯河市', '三门峡市', '南阳市', '商丘市', '信阳市', '周口市', '驻马店市', '济源市']
for i in range(7):
values2 = df.iloc[:,i]
data = []
for index in range(len(city)):
city_info = [city[index], values2[index]]
data.append(city_info)
print(data)
# 方法二 设置地图参数
def base_info():
map = Map()
# 注意:这里是"河南' 不能是河南省
map.add("河南省地图", data, "河南")
map.set_global_opts(
title_opts=opts.TitleOpts(title="Map-河南省地图"),
visualmap_opts=opts.VisualMapOpts(max_=values2.max(), min_=values2.min(),range_color=['white','#BC8315']))
return map
c = base_info()
c.render(path="E:/砖/河南省国土空间规划/%s.html" % i)
如果为县级单元做分析,替换一些参数即可……
from pyecharts.charts import Map
from pyecharts import options as opts
# 城市 -- 指定省的城市 xx市
quxian = ['夏邑县', '民权县', '梁园区', '睢阳区', '柘城县', '宁陵县']
values3 = [3, 5, 7, 8, 2, 4]
data = []
for index in range(len(quxian)):
city_info = [quxian[index], values3[index]]
data.append(city_info)
print(data)
def map_shangqiu():
c = (
Map()
.add("商丘-Map", data, "商丘")
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-商丘地图"),
visualmap_opts=opts.VisualMapOpts(max_=10),
)
)
return c
c = map_shangqiu()
c.render(path="./html_files/商丘地图.html")
同理,世界地图:
from pyecharts.charts import Map
from pyecharts import options as opts
value = [95.1, 23.2, 43.3, 66.4, 88.5]
attr= ["China", "Canada", "Brazil", "Russia", "United States"]
data = []
for index in range(len(attr)):
city_info = [attr[index], value[index]]
data.append(city_info)
print(data)
def map_world():
c = (
Map()
.add("世界地图", data , "world")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-世界地图"),
visualmap_opts=opts.VisualMapOpts(max_=100),
)
)
return c
c = map_world()
c.render(path="./html_files/世界地图.html")
中国地图:
from pyecharts import options as opts
from pyecharts.charts import Map
province_distribution = {'河南': 45.23, '北京': 37.56, '河北': 21, '辽宁': 12, '江西': 6, '上海': 20, '安徽': 10, '江苏': 16, '湖南': 9, '浙江': 13, '海南': 2, '广东': 22, '湖北': 8, '黑龙江': 61, '澳门': 1, '陕西': 11, '四川': 7, '内蒙古': 73, '重庆': 3, '云南': 6, '贵州': 2, '吉林': 3, '山西': 12, '山东': 11, '福建': 4, '青海': 51, '舵主科技,质量保证': 1, '天津': 1}
provice=list(province_distribution.keys())
values=list(province_distribution.values())
data = []
for index in range(len(provice)):
city_info = [provice[index], values[index]]
data.append(city_info)
def map_base():
c = (
Map()
.add("中国地图",data, "china")
# is_show 是否显示城市标签
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="Map-基本示例"))
)
return c
# c = map_base()
# c.render(path="./html_files/中国地图.html")
def map_visualmap():
c = (
Map()
.add("中国地图", data, "china")
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-VisualMap(分段型)"),
# is_piecewise :是否分段显示
visualmap_opts=opts.VisualMapOpts(max_=100, is_piecewise=True),
)
)
return c
c = map_visualmap()
c.render(path="./html_files/中国地图2.html")
本文代码在博主“Python小学僧"的基础上测试修改而成。