一文带你掌握Pyecharts地理数据可视化的方法


Posted in Python onFebruary 06, 2021

本文主要介绍了Pyecharts地理数据可视化,分享给大家,具体如下:

一文带你掌握Pyecharts地理数据可视化的方法

一、Pyecharts简介和安装

1. 简介

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

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
  • 囊括了 30+ 种常见图表,应有尽有
  • 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
  • 可轻松集成至 Flask,Sanic,Django 等主流 Web 框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图文件,并且支持原生百度地图,为地理数据可视化提供强有力的支持

pyecharts版本v0.5.x 和 v1 间不兼容,v1 是一个全新的版本,语法也有很大不同。

2. 安装

安装pyecharts

pip install pyecharts -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
import pyecharts
print(pyecharts.__version__)     # 查看当前pyecharts版本

安装相关的地图扩展包

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-countries-pypkg  		# 全球国家地图
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-provinces-pypkg  # 中国省级地图
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-cities-pypkg   # 中国市级地图
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-counties-pypkg  # 中国县区级地图

二、地图可视化

1. 世界地图

利用 Starbucks.csv 中的数据,首先计算每个国家(Country)对应的门店数量,然后使用世界地图可视化展示星巴克门面店在全球的数量分布。

# -*- coding: UTF-8 -*-
"""
@File  :demo1.py
@Author :叶庭云
@CSDN  :https://yetingyun.blog.csdn.net/
"""
import pandas as pd
from pyecharts.charts import Map
from pyecharts import options as opts
from pyecharts.globals import ThemeType, CurrentConfig

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'

# pandas读取csv文件里的数据
df = pd.read_csv("Starbucks.csv")['Country']
# 统计各个地区星巴克门店数量
data = df.value_counts()
datas = [(i, int(j)) for i, j in zip(data.index, data.values)]


# 实例化一个Map对象
map_ = Map(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
# 世界地图
map_.add("门店数量", data_pair=datas, maptype="world")
map_.set_series_opts(label_opts=opts.LabelOpts(is_show=False))  # 不显示label
map_.set_global_opts(
   title_opts=opts.TitleOpts(title="星巴克门店数量在全球分布", pos_left='40%', pos_top='10'),  # 调整title位置
   legend_opts=opts.LegendOpts(is_show=False),
   visualmap_opts=opts.VisualMapOpts(max_=13608, min_=1, is_piecewise=True,
   pieces=[{"max": 9, "min": 1, "label": "1-9", "color": "#00FFFF"},    # 分段 添加图例注释和颜色
     {"max": 99, "min": 10, "label": "10-99", "color": "#A52A2A"},
     {"max": 499, "min": 100, "label": "100-499", "color": "#0000FF	"},
     {"max": 999, "min": 500, "label": "500-999", "color": "#FF00FF"},
     {"max": 2000, "min": 1000, "label": "1000-2000", "color": "#228B22"},
     {"max": 3000, "min": 2000, "label": "2000-3000", "color": "#FF0000"},
     {"max": 20000, "min": 10000, "label": ">=10000", "color": "#FFD700"}
       ])
   )

# 渲染在网页上
map_.render('星巴克门店在全球的分布.html')

运行效果如下:

一文带你掌握Pyecharts地理数据可视化的方法

2. 国家地图

涟漪散点图

利用 china.csv 中的数据,首先计算每个城市(City)对应的门店数量,然后使用 pyecharts 包内 Geo 模块绘制星巴克门面店在中国各城市的数量分布的涟漪散点地图。

import pandas as pd
from pyecharts.globals import ThemeType, CurrentConfig, GeoType
from pyecharts import options as opts
from pyecharts.charts import Geo

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'
# pandas读取csv文件数据
df = pd.read_csv("china.csv")['City']
data = df.value_counts()

datas = [(i, int(j)) for i, j in zip(data.index, data.values)]
print(datas)

geo = Geo(init_opts=opts.InitOpts(width='1000px', height='600px', theme=ThemeType.DARK))
geo.add_schema(maptype='china', label_opts=opts.LabelOpts(is_show=True))  # 显示label 省名
geo.add('门店数量', data_pair=datas, type_=GeoType.EFFECT_SCATTER, symbol_size=8)
geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo.set_global_opts(title_opts=opts.TitleOpts(title='星巴克门店在中国的分布'),
          visualmap_opts=opts.VisualMapOpts(max_=550, is_piecewise=True,
          pieces=[{"max": 50, "min": 0, "label": "0-50", "color": "#708090"},    # 分段 添加图例注释 和颜色
               {"max": 100, "min": 51, "label": "51-100", "color": "#00FFFF"},
               {"max": 200, "min": 101, "label": "101-200", "color": "#00008B"},
               {"max": 300, "min": 201, "label": "201-300", "color": "#8B008B"},
               {"max": 600, "min": 500, "label": "500-600", "color": "#FF0000"},
                 ])
          )

geo.render("星巴克门店在中国的分布.html")

运行效果如下:

一文带你掌握Pyecharts地理数据可视化的方法

动态轨迹图

# -*- coding: UTF-8 -*-
"""
@File  :demo3.py
@Author :叶庭云
@CSDN  :https://yetingyun.blog.csdn.net/
"""
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType, CurrentConfig, ThemeType

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'
# 链式调用
c = (
  Geo()
  .add_schema(
    maptype="china",
    itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="#111"),
    label_opts=opts.LabelOpts(is_show=True)
  )
  .add(
    "",
    [("广州", 55), ("北京", 66), ("杭州", 77), ("重庆", 88), ('成都', 100), ('海口', 80)],
    type_=ChartType.EFFECT_SCATTER,
    color="white",
  )
  .add(
    "",
    [("广州", "上海"), ("广州", "北京"), ("广州", "杭州"), ("广州", "重庆"),
     ('成都', '海口'), ('海口', '北京'), ('海口', '重庆'), ('重庆', '上海')
     ],
    type_=ChartType.LINES,
    effect_opts=opts.EffectOpts(
      symbol=SymbolType.ARROW, symbol_size=6, color="blue" # 轨迹线蓝色
    ),
    linestyle_opts=opts.LineStyleOpts(curve=0.2), # 轨迹线弯曲度
  )
  .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  .set_global_opts(title_opts=opts.TitleOpts(title="动态轨迹图"))
  .render("geo_lines_background.html")
)

运行效果如下:

一文带你掌握Pyecharts地理数据可视化的方法

3. 省市地图

热力图

# -*- coding: UTF-8 -*-
"""
@File  :demo4.py
@Author :叶庭云
@CSDN  :https://yetingyun.blog.csdn.net/
"""
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.faker import Faker
from pyecharts.globals import GeoType, CurrentConfig

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'

c = (
  Geo()
  .add_schema(maptype="广东", label_opts=opts.LabelOpts(is_show=True))
  .add(
    "热力图",
    [list(z) for z in zip(Faker.guangdong_city, Faker.values())],
    type_=GeoType.HEATMAP,
  )
  .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
  .set_global_opts(
    visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="Geo-广东地图")
  )
  .render("geo_guangdong.html")
)

运行效果如下:

一文带你掌握Pyecharts地理数据可视化的方法

地图上批量添加经纬度数据

数据来源于美团网成都地区酒店信息,利用其中酒店的经纬度数据,批量添加在地图上可视化。

# -*- coding: UTF-8 -*-
"""
@File  :demo5.py
@Author :叶庭云
@CSDN  :https://yetingyun.blog.csdn.net/
"""
import pandas as pd   
from pyecharts.charts import Geo  
from pyecharts import options as opts  
from pyecharts.globals import GeoType, CurrentConfig, ThemeType

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'
# 读取Excel数据 数据来源美团网酒店信息
df = pd.read_excel("hotel.xlsx")

# 获取 地点 经纬度信息
geo_sight_coord = {df.iloc[i]['酒店地址']: [df.iloc[i]['经度'], df.iloc[i]['纬度']] for i in range(len(df))}
data = [(df['酒店地址'][j], f"{int(df['最低价'][j])}元(最低价)") for j in range(len(df))]
# print(data)
# print(geo_sight_coord)

# 实例化Geo对象 导入成都地图
g = Geo(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION, width="1000px", height="600px"))
g.add_schema(maptype="成都")

for k, v in list(geo_sight_coord.items()):
  # 添加地址、经纬度数据
  g.add_coordinate(k, v[0], v[1])

# 生成涟漪散点图
g.add("", data_pair=data, type_=GeoType.EFFECT_SCATTER, symbol_size=6)
g.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
g.set_global_opts(title_opts=opts.TitleOpts(title="成都-酒店地址分布"))
g.render("酒店地址分布.html")

运行效果如下:

一文带你掌握Pyecharts地理数据可视化的方法

到此这篇关于一文带你掌握Pyecharts地理数据可视化的方法的文章就介绍到这了,更多相关Pyecharts地理数据可视化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python常用正则表达式符号浅析
Aug 13 Python
Python中处理字符串之endswith()方法的使用简介
May 18 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
python书籍信息爬虫实例
Mar 19 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 Python
解决Windows下python和pip命令无法使用的问题
Aug 31 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 #Python
Python第三方库安装缓慢的解决方法
Feb 06 #Python
python中threading和queue库实现多线程编程
Feb 06 #Python
Python3爬虫ChromeDriver的安装实例
Feb 06 #Python
解决pycharm修改代码后第一次运行不生效的问题
Feb 06 #Python
Python tkinter之ComboBox(下拉框)的使用简介
Feb 05 #Python
python批量提取图片信息并保存的实现
Feb 05 #Python
You might like
表单复选框向PHP传输数据的代码
2007/11/13 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
Node批量爬取头条视频并保存方法
2018/09/20 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
Python 装饰器深入理解
2017/03/16 Python
python微信公众号开发简单流程
2018/03/23 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
办公室打字员岗位职责
2014/04/16 职场文书
质量管理标语
2014/06/12 职场文书
工地宣传标语
2014/06/18 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
平面设计师岗位职责
2014/09/18 职场文书
胡桃夹子观后感
2015/06/11 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书