pyecharts对于经纬度_一文带你掌握Pyecharts地理数据可视化的方法

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

2e53ficyrca.jpg

一、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')

运行效果如下:

cdlsjlkrlya.jpg

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")

运行效果如下:

wwfjt1zm1bt.jpg

动态轨迹图

# -*- 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")

)

运行效果如下:

j43kulkckpm.jpg

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")

)

运行效果如下:

vmcz4hmmjgb.jpg

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

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

# -*- 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")

运行效果如下:

3olja3ee5a5.jpg

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Sqlmap对dvwa进行sql注入测试(初级阶段)

0.测试准备 1)打开Kali虚拟机终端; 2)打开靶机OWASP,并通过浏览器,输入IP地址进入dvwa的主页,然后选择SQL injection进入SQL注入的测试页面 1.获取DVWA的url和cookie 在输入框中输入1,显示有内容&…

什么是软件生命周期

软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种…

STL中map和string, vector 用法详解

1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能…

如果备份还原SecureCRT、Xshell远程工具远程

因为有时候电脑操作系统要重新安装,需要将远程备份下来。或者要将远程发给其他同事。一、如何备份还原SecureCRT远程1、打开options-global options---general---configuration paths找到配置文件保存路径,如下图:2、打开C:\Users\NUC\AppDat…

Centos7 下yum安装mysql

转载于:https://www.cnblogs.com/nbjjy/p/9023991.html

Python协程--迭代器

0. 实现一个可以迭代的对象 1)要想使一个对象实现迭代的功能,须实现__iter__和__next__方法。 2)判断classmate是否是可以迭代的对象: from collections import Iterable isinstance(classmate, Iterable)结果为True则说明是可以…

什么是敏捷开发

什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。 怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的…

May 18:PHP 输出语句

通过前面的学习了解了php的基本语法,今天向大家简单介绍php的几种输出方式: 1. echo 常用的输出语句,例如:echo helloworld!; 2. print() 输出语句,有返回值。例如:print(helloworld&#x…

SendMessage、PostMessage原理和源代码详解

本文讲解SendMessage、PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级、中级、高级程序员进行理解,三个步骤分别为: 1、SendMessage、PostMessage的运行机制。 2、SendMessage、PostMessage的运行内幕。 3、…

Python协程--实现斐波那契数列(Fibonacci)的几种方式

1.使用for遍历list数组 # 使用for遍历list数组 nums list() a 0 b 1 i 0while i < 10:nums.append(a)a, b b, abi 1for num in nums:print(num)2.使用迭代器完成 class Fibonacci(object):def __init__(self, all_num):self.all_num all_numself.current_num 0sel…

敏捷开发宣言

敏捷开发宣言&#xff1a; 1. 个体和交互胜过过程和工具 2. 可工作的软件胜过面面俱到的文档 3. 客户协作胜过合同谈判 4. 响应变化胜过遵循计划 从上面的宣言可以看出&#xff0c;敏捷开发的核心是人 、协作、时刻可运行的软件、变化。

java fast math,Java FastMath.signum方法代码示例

import org.apache.commons.math3.util.FastMath; //导入方法依赖的package包/类/*** {inheritDoc}*/Overrideprotected double doSolve()throws TooManyEvaluationsException,NoBracketingException {double min getMin();double max getMax();// [x1, x2] is the bracketin…

什么是可行性研究

1.并非任何问题都有简单明显的解决办法&#xff0c;事实上&#xff0c;许多问题不可能在预定的系统规模或时间期限之内解决。2.如果问题没有可行的解&#xff0c;那么花费在这项工程上的任何时间、人力、软硬件资源和经费&#xff0c;都是无谓的浪费。3.可行性研究的目的&#…

FTP服务的简介和配置详解

FTP服务的简介和配置详解注意&#xff1a;配置FTP服务时&#xff0c;最好关闭防火墙和selinux1、FTP服务简介FTP 是File Transfer Protocol&#xff08;文件传输协议&#xff09;的英文简称&#xff0c;而中文简称为“文件传输协议”。用于Internet上的控制文件的双向传输。同时…

Python协程--生成器(通过异常来判断生成器已经结束)

以实现斐波那契数列为例&#xff1a; def create_num(all_num):a, b 0, 1current_num 0while current_num < all_num:yield a # 如果一个函数中有yield语句&#xff0c;那么这个就不在是函数&#xff0c;而是一个生成器的模板a, b b, abcurrent_num 1return "ok.…

四种类型转换 cast

1.static_cast 2.dynamic_cast 3.const_cast 4. reinterpret_cast 例子1&#xff1a; float x; cout<<static_cast<int>(x); ... f(static_cast<string>("hello")); 例子2&#xff1a; class Car; class Cabriolet:pbulic Car { …

java获取不重复订单号,Java 生成永不重复的订单号

package com.taiping.test;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;public class Test12 {/*** 生成永不重复的订单号* param startLetter 订单号开头字符串* param size 订单号中随机的大写字母个数* return*/public static String…

CSS中position属性(abusolute | relative | static | fixed)区别

关于css3中position属性的定义&#xff1a; 转载于:https://www.cnblogs.com/tangjiao/p/9025934.html

什么是系统流程图

系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子的形式描绘组成系统的每个部件&#xff08;程序&#xff0c;文档&#xff0c;数据库&#xff0c;人工过程等&#xff09;。系统流程图表达的是数据在系统各部件之间流动的情况&#xff0c;而不是对…

Python协程--生成器(实现多任务)

0.生成器 1.使用yield完成多任务 import timedef task_1():while True:print("---1----")time.sleep(0.1)yielddef task_2():while True:print("---2----")time.sleep(0.1)yielddef main():t1 task_1()t2 task_2()# 先让t1运行一会&#xff0c;当t1中遇…