老鼠屎地理信息可视化第三弹:Plotly+Pyecharts绘制地理坐标系线图

    由于最近老鼠屎做的东西和地图上的线型图相关,因此在这里做一点简单总结。很多地方都调试得很不理想,希望成功的地方可以给大家带来一点点启发,不理想的地方也欢迎大神们赐教。

1 Plotly

1.1 地图上绘制线

    有关pyplot的相关在老鼠屎的博文使用plotly神器绘制地图(Python版--demo虽易,操作不易,且学且珍惜)中有过简要介绍,这里老鼠屎根据自己的需要写了一个小demo,实战演练了一下,以及实现了给不同线赋以不同数值,通过透明度予以体现。

#引入相关库
import pandas as pd
from plotly.offline import init_notebook_mode, iplot
init_notebook_mode(connected='True')#这里画的对应下图中一个个的点
lonlat = [ dict(type = 'scattergeo',#这个地方可以选择的只有"ISO-3","USA-states"和"country names" locationmode = 'country names',#我这里把这些点放在一个叫location的DataFrame里面,这里是它们的经纬度信息lon = location['lon'],lat = location['lat'],hoverinfo = 'text',text = location['station'],mode = 'markers',marker = dict( size=2, color='rgb(255, 0, 0)',line = dict(width=3,color='rgba(68, 68, 68, 0)')))]#这里标明路径信息,我把路径信息放在一个叫hjnm2的DataFrame里面        
subway_paths = []
for i in range( len(hjnm2) ):subway_paths.append(dict(type = 'scattergeo',locationmode = 'country names',lon = [ hjnm2['lon_x'][i], hjnm2['lon_y'][i] ],lat = [ hjnm2['lat_x'][i], hjnm2['lat_y'][i] ],mode = 'lines',line = dict(width = 1,color = 'red',),#这里很有趣,用线的透明度来表示数量的多少opacity = float(hjnm2['nums'][i])/float(hjnm2['nums'].max()),))layout = dict(title = 'XXXXXXXX',showlegend = False, geo = dict(
#设置地图的范围,可以选择的有"world","usa","europe","asia","africa",
#"north america"和"south america"scope='asia',#projection=dict( type='azimuthal equal area' ),showland = True,landcolor = 'rgb(243, 243, 243)',countrycolor = 'rgb(204, 204, 204)',),)fig = dict( data=subway_paths + lonlat, layout=layout )
iplot( fig, filename='d3-flight-paths' )

     来看一下效果。由于我的DataFrame比较大,有70000多条数据,使用plotly真的加载不出来。这里先用20000条数据先跑起来看了一下。

     由于scope选择的是"asia",而我绘制的区域很小,因而在地图上看着就是一个点,放大后如下图所示。

     我的location数据格式大体如下:

    hjnm2数据格式如下:

 

1.2  调用mapbox

    关于使用plotly调用mapbox,博主在使用plotly神器绘制地图(Python版--demo虽易,操作不易,且学且珍惜)中也有提到过,这里主要讲一下使用它画线。代码如下:

import plotly.plotly as py
import plotly.graph_objs as go
import plotly.graph_objs as go
from plotly.offline import init_notebook_mode, iplot
init_notebook_mode(connected='True')mapbox_access_token = 'XXXXXXXX'data = [go.Scattermapbox(lat=['38.91427','38.91538','38.91458','38.92239','38.93222','38.90842','38.91931','38.93260','38.91368','38.88516','38.921894','38.93206','38.91275'],lon=['-77.02827','-77.02013','-77.03155','-77.04227','-77.02854','-77.02419','-77.02518','-77.03304','-77.04509','-76.99656','-77.042438','-77.02821','-77.01239'],mode='lines',marker=dict(size=9),text=["The coffee bar","Bistro Bohem","Black Cat","Snap","Columbia Heights Coffee","Azi's Cafe","Blind Dog Cafe","Le Caprice","Filter","Peregrine","Tryst","The Coupe","Big Bear Cafe"],)
]layout = go.Layout(autosize=True,hovermode='closest',mapbox=dict(accesstoken=mapbox_access_token,bearing=0,center=dict(lat=38.92,lon=-77.07),pitch=0,zoom=10),
)fig = dict(data=data, layout=layout)
iplot(fig, filename='Multiple Mapbox')

     和刚刚的效果相比,调用mapbox在地图的显示上更加细致准确了,然而这种方法是对相连的这些点依次连线,并没有实现start-end这种想要的效果。当然,这里特别强调,这里有可能是博主功力问题没能够实现那种效果,博主欢迎大神赐教,不胜感激!

2 Pyecharts

2.1 安装

    pyecharts的安装非常简单,就普通的pip install就可以。对于普通的图表,如bar,line等,安装好后即可制图。然而对于地图,如果仅仅是安装了pyecharts这个库,代码运行后会发现结果并无法显示。这里有个很重要的坑,在pyecharts中需要安装地图相关库才可以,当然安装的方法也是在cmd中pip install即可。安装好后需要重启一下jupyter notebook。

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
pip install echarts-united-kingdom-pypkg

2.2 使用pyecharts绘制地理坐标系线图

    有关使用pyecharts绘制地理坐标系线图,在pyecharts官方文档中有介绍,然而其官方文档的demo是某一已有地点到另一已有地点的连线,这里主要是将地点自定义。

    绘制地理坐标系线图,使用GeoLines方法,在其参数geo_cities_coords中传入一个dict,用于自定义地区经纬度,类似如 {'阿城': [126.58, 45.32],} 这样的字典。

from pyecharts import GeoLines, Style#这里先经度后纬度,定义各个点坐标
geo_cities_coords={'三林': [121.5123244, 31.143310800000002],'三林东': [121.5232337, 31.14652508],'三门路': [121.50799520000001, 31.31309147],'上南路': [121.5064128, 31.14911246],'上大路': [121.40917900000001, 31.31352358],'上海体育场': [121.44371310000001, 31.18552163],'上海体育馆': [121.4370549, 31.18272248],'上海儿童医学中心': [121.5239264, 31.20405048]}  style = Style(title_top="#fff",title_pos = "center",width=1200,height=600,background_color="#404a59"
)dataline=[["三林","上海儿童医学中心"],["三林东","上海体育馆"],["三门路","上海体育场"],["上南路","上大路"]]geolines = GeoLines("GeoLines 示例", **style.init_style)
geolines.add("", dataline, is_legend_show=False,maptype = '上海',geo_cities_coords=geo_cities_coords)
geolines.render()
geolines

    可以看一下效果。 

    然而使用pyecharts并没有实现不同数值通过线条透明度予以体现的功能,以及自定义的地点如何设置颜色仍在探索, 

参考资料:

1.plotly官方文档:https://plot.ly/python/

2.pyecharts官方文档:http://pyecharts.org/#/zh-cn/prepare

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

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

相关文章

Echarts 地理信息可视化:基于地图显示坐标点信息

Ecahrts 基于地理信息的可视化 Echarts 是一款基于js的交互式图表工具 这一模型可用于显示气候、地理、人流等各种信息。 1、环境 在线调试echarts的功能可以在官网,选择实例下任意一个点开: 然后在左侧的编辑框中即可编辑(其中包含了自动渲染脚本&…

数据可视化图表-散点图(Scatter plot)

本文是接着这篇内容的:https://blog.csdn.net/Cassiel60/article/details/88350442 散点图是用于研究两个变量之间关系的经典的和基本的图表。 如果数据中有多个组,则可能需要以不同颜色可视化每个组。 在 matplotlib 中,您可以使用 plt.sca…

实战PyQt5: 155-QChart图表之极坐标图表

在前面的图表中,我们使用的坐标系都是直角坐标系(也称笛卡尔坐标系), 但是有些数据序列,使用极坐标系来显示更合理(比如常见的雷达图)。QChart中,提供QPolarChart来实现用极坐标系显示的图表。 QPolarChart QPolarChart在极坐标图中显示数据…

2022-04-22 工作记录--Highcharts-图表点击事件 + 图例点击事件 + 图例格式化后的回调

Highcharts-图表点击事件 图例点击事件 图例格式化后的回调 一、前言 看似很简单的问题,其实里面有很多细节,所以做个笔记哟~❀ 如下图:上面是图表,下面是图例哟☺️ 二、官方文档 https://www.highcharts.com.cn/docs 三、…

XCL-Charts图表库简要教程及常见问题

这个Andriod图表库项目从开始至现在,热情消耗几近殆尽。还好已基本实现我想做的那些东西。趁还剩下点兴趣,把一些点非常简单的归纳一下。 所支持的图表类型: 基类 图表名称 BarChart 横/竖向柱形图及背向式柱…

使用Google Chart API 创建实时图表

实时图表可以实时显示数据。这意味着数据将永久更新以始终显示当前图表。要创建实时图表,我们使用JavaScript和Google Chart API。 这些实时图表通常用于仪表板中,以显示例如温度或价格的变化情况。应用领域多样,它们看起来确实不错。你自己看…

利用ARCGIS实现图片与excel中坐标点的匹配并绘图

一、背景 本次的实验完成的是坐标点文件与图片的匹配,已有的数据分别是点的坐标excel文件以及区域图片,来实现区域的绘制。 二、步骤 1、首先将坐标点excel文件导入ARCGIS中进行展点,数据的格式如下: 2、点击ARCGIS界面中的文件…

chatgpt赋能Python-python_plot坐标轴

Python绘图库中坐标轴的设置 介绍 Python是一种简单易学,功能强大的编程语言。它被广泛用于数据科学和可视化领域。Python绘图库中的坐标轴设置可以让我们更好地展示数据,让我们更轻松地理解数据。本篇文章将介绍Python绘图库中坐标轴设置的方法和技巧…

Unity数据可视化图表插件XCharts(折线图、柱状图、饼图、雷达图、散点图、热力图、热力图、仪表盘、环形图、极坐标、水位图等等)

文章目录 一、前言二、Unity数据可视化图表插件:XCharts1、运行效果2、文档教程 三、结束语 一、前言 点关注不迷路,持续输出Unity干货文章。 嗨,大家好,我是新发。 今天,我在GitHub上看到一个屌炸天的Unity插件&…

pyecharts0.5.x制作含地图的数据看板

引言 pyecharts作为Python的数据可视化包,其强大的功能不言而喻,Python Echart,想想就觉得牛叉。目前pyecharts有两个大的版本,一个是0.5.x版本的,一个是1.0以后版本,而且这两个版本差别很大。如果是有的…

antv/g2图表tooltip自定义并展示坐标之外的数据

首先使用itemTpl自定义tooltip 效果是这样的tooltip展示坐标之外的数据 感觉Antv文档很不详细,写这块时找了好久才找到方法,现在记一下,方便今后的观看和其他遇到此问题的同学解决办法。 itemTpl this.chart.tooltip({showCrosshairs: true,…

pyecharts源码解读(13)图表类包charts之组合图表:直角坐标系(网格布局)Grid

当前pyecharts的版本为1.9.0。 概述 pyecharts/charts/composite_charts/包中的四个模块分别定义了组合图表类,其中pyecharts/charts/composite_charts/grid.py模块只定义了网格布局类Grid。 Grid类继承自图表基类Base,作用为在一个echarts实例中利用…

宇宙中大数字

1、高德纳箭头 2、葛力函数 如果脑子里面装一个葛里恒数,脑子就成了黑洞了。 后来人们研究出tree3

CCF-CSP 小中大 C语言

时间限制&#xff1a;0.1s 空间限制&#xff1a;512.0MB #include<stdio.h> int main() { int n,max,min,mid,midd,i; scanf("%d",&n); int a[n]; for(i0;i<n;i) {scanf("%d",&a[i]);} //输入 if(a[0]>a[n-1]){maxa[0];mina[n-1];} e…

redis中大Value问题的解决

我们日常在使用redis的时候, 有时会碰到大Value的问题, 超级大的一个Value存到redis中去, 这样其实不好, 我们可以把value进行压缩. 下面我们使用java自带的压缩, 对字符串进行压缩. /*** 使用gzip压缩字符串** param originString 要压缩的字符串* return 压缩后的字符串*/…

java中大素数生成算法

目前的公开密钥 算法大部分基于大整数分解、有限域上的离散对数问题和椭 圆曲线上的离散对数问题&#xff0c;这些数学难题的构建大部分都需 要生成一种超大的素数&#xff0c;尤其在经典的RSA算法中&#xff0c;生成的素数的质量对系统的安全性有很大的影响。 1.原理 费马小…

解决js中大数的问题

大数的理解: 就是由于数字太大了,然后js解析不了,不认识. 就比如实际生活中,在双11的时候,我们知道淘宝一夜之间总购买量肯定是一个很大很大的金额,当我们前端碰到一个非常大的数字的时候,js可能会解析不了. JS中的安全数字: > Number.MAX_SAFE_INTEGER 可以查看js中的…

CSP 201903-1 小中大

题目链接&#xff1a; 计算机软件能力认证考试系统http://118.190.20.162/view.page?gpidT89 【分析】主要学一下java的四舍五入&#xff0c;String,format("%.f", double&#xff09;&#xff1b; import java.util.Arrays; import java.util.Scanner;public cla…

CSP:小中大

试题编号&#xff1a;201903-1 试题名称&#xff1a;小中大 时间限制&#xff1a;1.0s 内存限制&#xff1a;512.0MB 思路&#xff1a;题目很简单&#xff0c;依次输出最大值&#xff0c;中位数&#xff0c;最小值。输出中位数的时候很神奇的出错。。。费了好半天事才改对。…

ccf小中大

试题编号&#xff1a;201903-1试题名称&#xff1a;小中大时间限制&#xff1a;1.0s内存限制&#xff1a;512.0MB问题描述&#xff1a; 思路很简单&#xff0c;但是有很多细节要考虑 如果中位数是小数&#xff0c;则要四舍五入&#xff0c;保留一位小数 否则直接输出整…