Pyecharts中Map和Geo的使用笔记
文章目录
- 1. Geo/Map中如何自定义(增加/修改)经纬度坐标?
- 相关文档:
- 本地源文件
- 1. pyecharts 自带的datasets(json)
- 2. 额外安装的地图文件包
- ?依赖情况
- 如果输入了不存在的地点名称会发生什么?
- Geo中的解决方案:
- Map中的解决方案:
- 其他问题
- 2. Geo/Map中地图上圆点上方数值显示的是经纬度数值,能否显示地图坐标名称和数值?
- Map
- Geo
- 回调函数方法显示标签
- 更多扩展:#TODO
我使用的Pyecharts 版本:v 0.5.11
官方文档: https://05x-docs.pyecharts.org/#/
1. Geo/Map中如何自定义(增加/修改)经纬度坐标?
相关文档:
- 自定义地图:https://05x-docs.pyecharts.org/#/zh-cn/customize_map?id=version-057
- 地理地图数据:https://05x-docs.pyecharts.org/#/zh-cn/datasets?id=提供自定义数据
- 提供自定义数据:https://github.com/pyecharts/geo-region-coords
本地源文件
1. pyecharts 自带的datasets(json)
数据格式如下:
2. 额外安装的地图文件包
自从 v0.3.2 开始, pyecharts 将不再自带地图 js 文件。如需要用到地图图表,需自行安装对应的地图文件包。
在本地的位置:
例如我的在:C:UsersadminAnaconda3Libsite-packagesecharts_china_cities_pypkg
数据格式如下:
依赖情况
据我的研究,Geo
依赖的是 1. pyecharts 自带的datasets(city_coordinates.json);Map
依赖的是 2. 额外安装的地图文件包。(如果不对请指正,感谢~)
如果输入了不存在的地点名称会发生什么?
在Geo中:会报错。例如:
from pyecharts import Geo
districts=[‘白云区’, ‘从化区’, ‘番禺1111区’, ]
value = [1, 2, 3,]geo = Geo(“Geo地图示例”, “”,title_pos=‘center’, width=1000, height=1000)
geo.add("",
districts, value, maptype=‘广州’,
is_visualmap=True,
is_label_show=True ,
visual_range=[min(value), max(value)],
)
geo.render()
geo
地图文件中不存在 “番禺1111区”,程序报错:
这时候,
Geo中的解决方案:
可以在源文件中直接修改或添加经纬度坐标位置;
Geo
中有add_coordinate()
方法,例如:from pyecharts import Geo
districts=[‘白云区’, ‘从化区’, ‘番禺区’, ‘海珠区’, ‘花都区’, ‘黄埔区’, ‘荔湾区’, ‘南沙区’, ‘天河区’, ‘越秀区’, ‘增城区’]
value = [ 1, 2, 3,4, 5,6,7,8,9,10, 11]
geo = Geo(“Geo地图示例”, “”,title_pos=‘center’, width=1000, height=1000)
geo.add_coordinate(‘南沙区’, 113.525165,22.801624)
geo.add_coordinate(‘白云区’, 113.273238,23.3)
geo.add("",
districts, value, maptype=‘广州’,
is_visualmap=True,
is_label_show=True ,
visual_range=[min(value), max(value)],
label_formatter=’{b}’
)
geo
注意点:
如果
geo.add_coordinate
添加的地点在源文件中已经存在,则自定义添加的会覆盖源文件中的;注意在
v0.5.11
版本中,我估计是不完整或者旧版本的广州地图,没有“白云区”、“南沙区”,增城还是“增城市”而不是“增城区”,所以要手动修改。(Map
中也有类似现象)有些地点在地图上可能过于“拥挤”(例如广州地图的荔湾区,白云区,天河区,海珠区),也可以通过手动修改经纬度坐标来进行调整。(
Map
中也有类似现象)记录一下我对广州市11个区的经纬度坐标的调整:
geo =Geo(“广州市地图”)
geo.add_coordinate(‘白云区’, 113.273238,23.3)
geo.add_coordinate(‘越秀区’, 113.266835,23.128537)
geo.add_coordinate(‘海珠区’, 113.361575,23.08)
geo.add_coordinate(‘天河区’, 113.361575,23.20)
geo.add_coordinate(‘番禺区’, 113.384152,22.937556)
geo.add_coordinate(‘黄埔区’, 113.550541,23.24)
geo.add_coordinate(‘南沙区’, 113.525165,22.801624)
geo.add_coordinate(‘花都区’, 113.220463,23.403744)
geo.add_coordinate(‘从化区’, 113.586679,23.548748)
geo.add_coordinate(‘增城区’, 113.810627,23.261465)
geo.add_coordinate(‘荔湾区’, 113.23,23.05)
geo.add(’’, districts, value, maptype=‘广州’)
在Map中:不会报错,但该地点无法显示,例如:
from pyecharts import Map
districts=[‘白云区’, ‘从化区’, ‘番禺11111区’]
value = [ 1, 2, 3,]map = Map(“Map地图示例”, “”, title_pos=‘center’, width=1000, height=1000)
map.add("",
districts, value, maptype=‘广州’,
is_visualmap=True,
visual_range=[min(value), max(value)],
is_label_show=True ,
label_formatter=’{b}’+’{c}’,
)
map.render()
map
输出结果如下,‘番禺11111区’ 没有显示:
Map中的解决方案:
- 在源文件中直接修改或添加经纬度坐标位置;
注意点:
- 我发现了一个奇怪的现象:我在 2. 额外安装的地图文件包 的源文件中对广州市11个区的经纬度坐标进行了调整,在 jupyter notebook 中输出的图没有变化(还是挤在一起),如下:
- 但是
map.render()
出来的html文件
里显示的却是调整过后的,如下:
其他问题
(来自 https://github.com/pyecharts/pyecharts/issues/164 )
对于1:我尝试之后发现好像还是可以缩放欸。?
对于2. Map不能自定义经纬度,没办法,那就只能去源文件里手动修改啦
2. Geo/Map中地图上圆点上方数值显示的是经纬度数值,能否显示地图坐标名称和数值?
(https://github.com/pyecharts/pyecharts/issues/817 中有相关的讨论)
答案是可以的,利用回调函数设置.add()
中的label_formatter
属性即可。
回调函数:我自己的理解是,echarts 本身是 javascript,pyecharts 中的回调函数就是将 python 方法翻译为 javascript 方法的函数(如果不对,还请大神指正~)
Map
先看Map
中的情况:
运行如下代码,默认显示只显示类目值:
from pyecharts import Mapdistricts=['白云区', '从化区', '番禺区', '海珠区', '花都区', '黄埔区', '荔湾区', '南沙区', '天河区', '越秀区', '增城区']
value = [ 1, 2, 3,4, 5,6,7,8,9,10, 11]map = Map("Map地图示例", "",title_pos='center', width=1000, height=1000)
map.add("", districts, value,maptype='广州', is_visualmap=True, visual_range=[min(value), max(value)],is_label_show=True , )
map.render()
map
输出结果部分截图如下:
添加参数label_formatter
可以进行设置(中间还可以用“+”连接):
(来自于文档 基本使用->图标配置->通用配置项->label
https://05x-docs.pyecharts.org/#/zh-cn/charts_configure?id=label)
例如label_formatter='{b}'+'{c}'
,则类目值和数值可以一起显示了:
from pyecharts import Mapdistricts=['白云区', '从化区', '番禺区', '海珠区', '花都区', '黄埔区', '荔湾区', '南沙区', '天河区', '越秀区', '增城区']
value = [ 1, 2, 3,4, 5,6,7,8,9,10, 11]map = Map("Map地图示例", "",title_pos='center', width=1000, height=1000)
map.add("",districts, value,maptype='广州', is_visualmap=True, visual_range=[min(value), max(value)],is_label_show=True , label_formatter='{b}'+'{c}',)
map.render()
map
运行结果如下:
Geo
再来看Geo
中的情况。和Map
有所不同,默认的显示的是纬度值:
from pyecharts import Geodistricts=['白云区', '从化区', '番禺区', '海珠区', '花都区', '黄埔区', '荔湾区', '南沙区', '天河区', '越秀区', '增城区']
value = [ 1, 2, 3,4, 5,6,7,8,9,10, 11]geo = Geo("Geo地图示例", "",title_pos='center', width=1000, height=1000)
geo.add_coordinate('南沙区',113.525165,22.801624)
geo.add_coordinate('白云区', 113.273238,23.3)
geo.add("", districts, value,maptype='广州', is_visualmap=True, is_label_show=True , visual_range=[min(value), max(value)],#label_formatter='{b}'+'{c}')
geo.render()
geo
设置 label_formatter='{b}'+'{c}'
之后会把类目值+经度+纬度+数值一起显示出来:
回调函数方法显示标签
这时候就要用到回调函数了。操作如下:
先定义一个geo_formatter
函数:
def geo_formatter(params):return params.name + ' : ' + params.value[2]
然后再设置label_formatter=geo_formatter
即可:
from pyecharts import Geodef geo_formatter(params):return params.name + ' : '+ params.value[2]districts=['白云区', '从化区', '番禺区', '海珠区', '花都区', '黄埔区', '荔湾区', '南沙区', '天河区', '越秀区', '增城区']
value = [ 1, 2, 3,4, 5,6,7,8,9,10, 11]geo = Geo("Geo地图示例", "",title_pos='center', width=1000, height=1000)
geo.add_coordinate('南沙区',113.525165,22.801624)
geo.add_coordinate('白云区', 113.273238,23.3)
geo.add("", districts, value,maptype='广州', is_visualmap=True, is_label_show=True , visual_range=[min(value), max(value)],#label_formatter='{b}'+'{c}'label_formatter=geo_formatter, # 重点在这里,将函数直接传递为参数。)
geo.render()
geo
输出结果如下:
上述 format 的设置方式同样适用于:xaxis_formatter
(x 轴标签格式器),yaxis_formatter
(y 轴标签格式器),label_formatter
(文本标签格式器) ,tooltip_formatter
(提示框标签格式器)
更多扩展:#TODO
回调函数只能显示value值,name值等,那能不能显示针对每个城市的自定义的数值呢?(https://github.com/pyecharts/pyecharts/issues/1039)
(更新中…)
Pyecharts中Map和Geo的使用笔记相关推荐
- [python][jupyter notebook]之菜鸟安装[pyecharts]中Geo或Map显示问题
作为菜鸟,在学习使用pyecharts模块进入jupyter notebook的时候,又遇到了问题--那就是,可以使用一下代码,导入Geo和Map模块,但是弄了之后看不见地图. from pyecha ...
- python 实现对地图的点击_python实现Pyecharts实现动态地图(Map、Geo)
一些经常画图的开发人员大概都用过echart,不过小白用Python比较多,学习了python下的Pyecharts,发现这个包真的很强大.下面是小白对动态地图的实践案例: 假如有这样一组数据,全国每 ...
- python实现Pyecharts实现动态地图(Map、Geo)
一些经常画图的开发人员大概都用过echart,不过小白用Python比较多,学习了python下的Pyecharts,发现这个包真的很强大.下面是小白对动态地图的实践案例: 假如有这样一组数据,全国每 ...
- Python数据可视化 Pyecharts 制作 Map 地图
Python3 的 Pyecharts 制作 Map(地图) 时需要使用的设置参数和常用模板案例,可根据实际情况对案例中的内容进行调整即可. 文章目录 内容介绍 Demo 指定省市地图 指定国家地图 ...
- C++ 中 map 的用法
C++ 中 map 是一种键值对容器 初始化并赋值 map<string, int> mapAge = {{"张三", 19}, {"李四", 18 ...
- stream map方法_Java Stream中map和flatMap方法
最近看到一篇讲stream语法的文章,学习Java中map()和flatMap()方法之间的区别. 虽然看起来这两种方法都做同样的事情,都是做的映射操作,但实际上差之毫厘谬以千里. 通过演示Demo中 ...
- 如何使用pyecharts中的主题样式?
如何使用pyecharts中的主题样式? pyechart为用户提供了一套使用方便的主题风格. 本篇图文将总结pyecharts.globals中ThemeType所有主题风格并进行详细的解释. cl ...
- 如何使用pyecharts中自带的数据集?
如何使用 pyecharts 中自带的数据集? 我们在学习pyehcarts绘图的过程中,需要一些练习的数据. pyecharts为我们提供了这样的数据集 – Faker,存储于 faker.py 文 ...
- Java中Map用法详解
原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...
最新文章
- 构造一个完美的分类系统
- 6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作
- python def函数报错详解_Python函数详解
- 【今日CV 视觉论文速览】Wed, 6 Feb 2019
- mysql 乱码解决方案
- 程序员该怎么做,才能成为 coding 王者?
- java词频统计——web版支持
- maven更新总结与tomcat发布方法总结
- Altium Designer 在pcb下导入的原件引脚是绿的
- spark根据key输出到多个目录
- Confuser.crproj
- java---servlet与filter的联系与区别
- SQL数据库的下载与安装
- 批量快速截图方法(snipaste)
- MES系统源码 MES系统功能介绍
- 阿里云推送:ios和android指定用户推送消息和通知
- 给计算机图片文件夹加密码,文件夹加密软件如何给照片文件夹加密
- 傻码农嘚瑟啥,HR才是国内公司真正的中流砥柱!
- 机器学习 卷积神经网络 Convolutional Neural Network(CNN)
- 管理人员巡店用表-主管每日工作流程
热门文章
- Camera Sensor Binning skipping 模式介绍
- java八个包装类的名字_Java 提供名为( )的包装类来包装基本数据类型 int 。
- EyouCMS石材板材建筑材料公司网站模板源码+后台
- php 截取视频图片
- WPF C#开发中利用SQLDMO进行数据库备份还原操作中的注意点
- 迷你电脑主机的优缺点及应用分析
- 学习笔记之-51单片机特殊功能寄存器
- 量变与质变(生活中,技术上)
- 米家扫地机器人充满电需要多长时间_米家扫地机器人可以续航多久
- 通用收款收据打印软件,收据批量打印程序