中国地图省份热力图

发布时间:2025-12-09 18:17:20 浏览次数:5

1、下载chromedriver

查看chrome浏览器版本

在右上角下拉列表中,鼠标移动到“帮助”,然后点击左侧菜单中的“关于 Google Chrome”菜单

下载版本对应的chromedriver

版本号最后几位可以有差别
http://npm.taobao.org/mirrors/chromedriver/

2、安装pyecharts、snapshot-selenium

pip install pyecharts
pip install snapshot-selenium
直接成功

3、处理china.js文件

保存china.js文件

https://assets.pyecharts.org/assets/maps/china.js
打开网页,右键另存为

修正省份坐标

记事本打开china.js文件,Ctrl+F搜索需要修改的省份名,修改名称前的位置坐标,调整地图中显示位置

4、代码

创建虚拟数据
import pandas as pdimport numpy as np# 创建数据data = pd.DataFrame(columns=['所在地(省份)','招标单位数'])data['所在地(省份)'] = ["陕西","江西","辽宁","上海","福建","河南","海南","贵州","河北","湖南","北京","山西","内蒙古","宁夏","云南","浙江","湖北","黑龙江","天津","安徽","青海","新疆","广西","西藏","重庆","江苏","甘肃","山东","吉林","四川","广东"]data['招标单位数'] = sorted(np.random.randint(500,5000,31), reverse=True)
画热力图
province = data['所在地(省份)']num = data['招标单位数']list1 = [list(z) for z in zip(province, num)]# 画热力图from pyecharts.charts import Mapfrom pyecharts import options as optsfrom pyecharts.render import make_snapshotfrom snapshot_selenium import snapshotfrom bs4 import BeautifulSoupmap1 = Map()map1.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=max(num), range_color=['#feeeed', '#d64f44'])) # max_最大数据范围, range_color 渐变颜色范围map1.add(series_name=None, data_pair=list1, maptype="china", is_map_symbol_show=False)# 保存网页版热力图(问题:省份标签不居中)map1.render("C:/Users/10069/Desktop/map1.html")## 解决标签问题# 读取热力图with open("C:/Users/10069/Desktop/map1.html","r",encoding="utf-8") as f:f = f.read()sp = BeautifulSoup(f)# 用修改过的省份坐标文件china.js修正名称位置label_list = sp.find_all('script', src='https://assets.pyecharts.org/assets/maps/china.js')for label in label_list:label["src"] = 'C:/Users/10069/Desktop/china.js'# 覆盖原网页热力图with open("C:/Users/10069/Desktop/map1.html", 'w') as fp:fp.write(sp.prettify())# 将HTML文件转换为pngmake_snapshot(snapshot, "C:/Users/10069/Desktop/map1.html", "C:/Users/10069/Desktop/map1.png", is_remove_html=True)
HTML版
修改后的图片

完善版

def ChinaMap(num1, list1, title, html_path, png_path):map1 = Map()# max_最大数据范围, range_color 渐变颜色范围map1.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=max(num1), range_color=['#feeeed', '#d64f44'], pos_left='15%', pos_bottom='10%', item_height=100, item_width=20),title_opts=opts.TitleOpts(title=title, pos_left='center', item_gap=15, title_textstyle_opts=opts.TextStyleOpts(font_size=25)))map1.add(series_name=None, data_pair=list1, maptype="china", is_map_symbol_show=False, center=['10%', '10%'])map1.render(html_path)# 将引用地图改为本地修改过坐标的地图with open(html_path, "r", encoding="utf-8") as f:f = f.read()sp = BeautifulSoup(f, features="lxml") label_list = sp.find_all('script', src='https://assets.pyecharts.org/assets/maps/china.js')for label in label_list:label["src"] = 'D:/report/temp/china.js' with open(html_path, 'w') as fp:fp.write(sp.prettify()) # 将HTML文件渲染为pngmake_snapshot(snapshot, html_path, png_path, is_remove_html=True)data2 = pd.read_excel(r"D:\report\data\1\1.1.2 本月项目区域分布.xlsx")province = data2['所在地(省份)']num1 = data2['招标单位数量']list1 = [list(z) for z in zip(province, num1)]title1 = '本月招标单位全国分布图'html_path = "D:/report/temp/map.html"png_path = "D:/report/picture/1/1.2.2 招标单位区域分布.png"ChinaMap(num1, list1, title1, html_path, png_path)
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477