echarts geo地图示例_pyecharts之地图可视化

6c6f7009ab8dc5ba1655ef5899418553.gif

简介

? 概况

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

✨ 特性

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用

  • 囊括了 30+ 种常见图表,应有尽有

  • 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab

  • 可轻松集成至 Flask,Django 等主流 Web 框架

  • 高度灵活的配置项,可轻松搭配出精美的图表

  • 详细的文档和示例,帮助开发者更快的上手项目

  • 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

今天一起学习用pyecharts的Geo模块画热力图

首先我们要先安装今天用到必要的地图库:

pip install echarts-countries-pypkg     #全球国家地图    pip install echarts-china-provinces-pypkg   #中国省级地图pip install echarts-china-cities-pypkg  #中国市级地图pip install echarts-china-counties-pypkg #中国区县地图pip install echarts-china-misc-pypkg #中国大区地图

安装完后就可以开始绘图了。

这里我们要导入numpy,pandas包对数据进行预处理,为了从mysql数据库获取数据还需导入pymsql包,最后就是今天的主角pyecharts的Geo了。

接下来就是对数据预处理的步骤了,首先从数据库中导入数据(数据来源拉勾网的python职位信息),再把data中‘address’属性的值提取出来存入data1中,然后使用numpy的array函数把data1转化为数组形式存入data2中,接下来用tolist函数把data2转化为python的列表形式存入data3中,这时我们就可以把data3用set函数转变成集 了。至此,数据预处理第一步完成了。

import pandas as pdaimport numpy as npimport pymysqlfrom pyecharts import Geoconn = pymysql.connect(host = '127.0.0.1',user = 'root',passwd = 'root',db = 'lagou')sql = 'select * from lagou'data = pda.read_sql(sql,conn)data1 = data["address"]data2 = np.array(data1) #数组data3 = data2.tolist() #列表set=set(data3) #集

结果如下:

{'包头', '郑州', '西安', '南昌', '清远', '杭州', '大连', '阳江', '深圳', '贵阳', '烟台', '厦门', '太原', '广州', '东莞', '莆田', '泰安', '泉州', '哈尔滨', '重庆', '北京', '合肥', '深圳', '长春', '青岛', '宁波', '武汉', '北京', '宿州', '长沙', '济南', '上海', '东营', '佛山', '南京', '湖州', '福州', '无锡', '珠海', '淄博', '昆明', '天津', '临沂', '苏州', '成都', '惠州', '石家庄', '南宁', '唐山'}

第二步,这时我们就可以把第一步获得的集用来计数了。通过遍历set来获得计数后的字典:

dict={}for item in set:    dict.update({item:data3.count(item)})

结果如下:

{ '贵阳': 3, '宁波': 1, '长沙': 21, '湖州': 3, '临沂': 2, '唐山': 2, '青岛': 7, '太原': 3, '大连': 2, '南宁': 6, '泉州': 1, '烟台': 3, '东莞': 7, '昆明': 7, '福州': 6, '阳江': 1, '泰安': 1, '包头': 1, '南京': 34, '合肥': 7, '上海': 253, '西安': 38, '郑州': 10, '长春': 1, '重庆': 5, '杭州': 89, '哈尔滨': 1, '深圳': 223, '天津': 9, '石家庄': 4, '东营': 1, '无锡': 5, '淄博': 1, '成都': 57, '佛山': 3, '苏州': 20, '南昌': 4, '清远': 1, '厦门': 9, '珠海': 5, '广州': 78, '武汉': 44, '莆田': 1, '宿州': 1, '济南': 11, '惠州': 1, '北京': 421}

获得字典后就可以开始绘图了。

从字典中获取两个属性:

keys = list(dict.keys())values = list(dict.values())

keys是城市名,values是数量。

开始绘图。

geo = Geo("国内计算机语言人才需求热力图", "python", title_color="#fff", title_pos="center", width=2000, height=1000,background_color='#212121') # 背景geo.add("计算机人才需求热力图", keys, values, visual_range=[0, 5], type='effectScatter', visual_text_color="#fff", symbol_size=15,is_visualmap=True, is_roam=True)  # type有scatter, effectScatter, heatmap三种模式可选,可根据自己的需求选择对应的图表模式geo.render(path="国内python计算机语言人才需求热力图.html")

这里的"国内计算机语言人才需求热力图"是主标题文本,支持换行;"python"是副标题文本,支持换行;width画布宽度,默认为 800(px);height:画布高度,默认为 400(px);title_pos标题距离左侧距离,默认为’left’,有’auto’, ‘left’, ‘right’,‘center’可选,也可为百分比或整数;title_color主标题文本颜色,默认为 ‘#000’;background_color画布背景颜色,默认为 ‘#fff’。

在add函数中,visual_range表示图例条范围;type表示图类型,默认"scatter";visual_text_color表示图例条颜色;symbol_size表示标记的大小,默认12;is_visualmap表示显示图例条,默认True.

完整代码:

import pandas as pdaimport numpy as npimport pymysqlfrom pyecharts import Geoconn = pymysql.connect(host = '127.0.0.1',user = 'root',passwd = 'root',db = 'lagou')sql = 'select * from lagou'data = pda.read_sql(sql,conn)data1 = data["address"]data2 = np.array(data1) #数组data3 = data2.tolist() #列表set=set(data3) #集dict={}for item in set:    dict.update({item:data3.count(item)})keys = list(dict.keys())values = list(dict.values())geo = Geo("国内计算机语言人才需求热力图", "python", title_color="#fff", title_pos="center", width=2000, height=1000,background_color='#212121') # 背景geo.add("计算机人才需求热力图", keys, values, visual_range=[0, 5], type='effectScatter', visual_text_color="#fff", symbol_size=15,is_visualmap=True, is_roam=True)  # type有scatter, effectScatter, heatmap三种模式可选,可根据自己的需求选择对应的图表模式geo.render(path="国内python计算机语言人才需求热力图.html")
最终效果:

END


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值