一文带你掌握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连接sql server乱码的解决方法
Jan 28 Python
详解Django框架中的视图级缓存
Jul 23 Python
Python如何判断数独是否合法
Sep 08 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
Django入门使用示例
Dec 12 Python
利用Tkinter(python3.6)实现一个简单计算器
Dec 21 Python
python斐波那契数列的计算方法
Sep 27 Python
python通过http下载文件的方法详解
Jul 26 Python
如何使用python传入不确定个数参数
Feb 18 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
如何去掉文章里的 html 语法
2006/10/09 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
PHP类的反射用法实例
2014/11/03 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
Dom与浏览器兼容性说明
2010/10/25 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
js自定义回调函数
2015/12/13 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
Vue中computed与methods的区别详解
2018/03/24 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
小程序实现录音功能
2020/09/22 Javascript
Python生成随机密码的方法
2017/06/16 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
运行Python编写的程序方法实例
2020/10/21 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
网络技术专业求职信
2014/02/18 职场文书
建议书怎么写
2014/03/12 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
校园运动会广播稿
2015/08/19 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang