利用百度Echart库,完成简单迁徙图
0 准备城市坐标值
/*** 全国主要城市的坐标值*/
var cityCoordiante_var =
{'上海': [121.4648,31.2891],'东莞': [113.8953,22.901],'东营': [118.7073,37.5513],'中山': [113.4229,22.478],'临汾': [111.4783,36.1615],'临沂': [118.3118,35.2936],'丹东': [124.541,40.4242],'丽水': [119.5642,28.1854],'乌鲁木齐': [87.9236,43.5883],'佛山': [112.8955,23.1097],'保定': [115.0488,39.0948],'兰州': [103.5901,36.3043],....
};
1 准备UI素材
//飞机图标矢量图
var planePath = 'path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z';
//默认颜色数组
var color = ['#a6c84c', '#ffa022', '#46bee9'];
2 准备迁徙数组
2.1 迁入数据
var TochengduData2015 =
[[ {name:'上海',value:95},{name:'成都'}],[ {name:'广州',value:90},{name:'成都'}],[ {name:'大连',value:80},{name:'成都'}],[ {name:'南宁',value:70},{name:'成都'}],[ {name:'南昌',value:60},{name:'成都'}],[ {name:'拉萨',value:50},{name:'成都'}],[ {name:'长春',value:40},{name:'成都'}],[ {name:'包头',value:30},{name:'成都'}],[ {name:'重庆',value:20},{name:'成都'}],[ {name:'常州',value:10},{name:'成都'}]
];
2.2 迁出数据
var FromchengduData2016 = [[ {name:'成都'},{name:'上海',value:92}],[ {name:'成都'},{name:'广州',value:91}],[ {name:'成都'},{name:'大连',value:82}],[ {name:'成都'},{name:'南宁',value:73}],[ {name:'成都'},{name:'南昌',value:66}],[ {name:'成都'},{name:'拉萨',value:57}],[ {name:'成都'},{name:'长春',value:48}],[ {name:'成都'},{name:'包头',value:39}],[ {name:'成都'},{name:'重庆',value:20}],[ {name:'成都'},{name:'常州',value:11}]
];
3 填充迁徙数据Series
3.1 将迁徙数据改写为地图中的连线形式
var LineCities = function (data)
{//准备结果数组var res = [];//遍历参数数组,参数格式如2.1或2.2所示for (var i = 0; i < data.length; i++) {//获取一条记录var dataItem = data[i];//利用切片方式,通过name属性,获得城市列表中城市的坐标var fromCoord = cityCoordiante_var[dataItem[0].name];var toCoord = cityCoordiante_var[dataItem[1].name];//如果起、止城市都获得成功if (fromCoord && toCoord){//按照json对象存入res数组中res.push({fromName: dataItem[0].name,toName: dataItem[1].name,coords: [fromCoord, toCoord]});}}//返回结果return res;
};
3.2 高亮指定城市
/*** 利用城市名称-值,实现地图高亮* @param {Object} cityName 城市名* @param {Object} value 值*/
var markerCity = function (cityName,value)
{var res = [];var geoCoord = cityCoordiante_var[cityName];if (geoCoord) {if(value==undefined)value=100;res.push({name: cityName,value: geoCoord.concat(value)});}return res;
};
3.3 填装迁徙数据
/*** 填装迁徙数据* @param {Object} data [[{name:fromcity,value:fromvalue},{name:tocity,value:tocity}]]* @param {Object} isFrom 是迁入还是迁出数据*/
var fullLineCityData=function(data,isFrom)
{index=isFrom?0:1;var res = [];data.map(function (dataItem){res.push({name:dataItem[index].name,value: cityCoordiante_var[dataItem[index].name].concat([dataItem[index].value])/**注意value的格式 [lat,lon,value] 一定是数组包裹的*/}); });return res;
}
3.4 迁徙数据可视化设置
/*** 填装迁徙数据集合(谨慎修改)* @param {Object} MigraineData 填装数据集合*/
var FullMigraineData= function(MigraineData,isTo)
{if(isTo==undefined)isTo=true;/*** 准备数据集合*/var series = [];/*** 从TochengduData2015数据集中遍历数据*/[['成都', MigraineData]].forEach(function (item, i) {series.push({/*高亮迁徙动画效果*/name: item[0] + ' Top10',type: 'lines',zlevel: 1,effect: {show: true,period: 6,trailLength: 0.7,color: '#fff',symbolSize: 3},lineStyle: {normal: {color: color[i],width: 0,curveness: 0.2}},data: LineCities(item[1])//绘制城市连接线},/*迁徙线飞机效果*/{name: item[0] + ' Top10',type: 'lines',zlevel: 2,symbol: ['none', 'arrow'],symbolSize: 10,effect: {show: true,period: 6,trailLength: 0,symbol: planePath,symbolSize: 15},lineStyle: {normal: {color: color[i],width: 1,opacity: 0.6,curveness: 0.2}},data: LineCities(item[1])//绘制城市连接线},{/*高亮迁入地区*/name: item[0] + ' Top10',type: 'effectScatter',coordinateSystem: 'geo',zlevel: 2,rippleEffect: {brushType: 'stroke'},label: {normal: {show: true,position: 'right',formatter: '{b}'}},symbolSize: function (val) {return val[2] / 8;},itemStyle: {normal: {color: color[i]}},/*填装迁徙数据*/data: fullLineCityData(item[1],isTo)},{/*高亮迁出区域*/name: item[0] + ' Top10',type: 'effectScatter',coordinateSystem: 'geo',zlevel: 3,rippleEffect: {brushType: 'stroke'},label: {normal: {show: true,position: 'right',formatter: '{b}'}},symbolSize: function (val) {return val[2] / 8;},itemStyle: {normal: {color: color[1]}},data: markerCity(item[0])//高亮迁出区域});});return series;
}
4 构建地图对象
/**设置迁入数据*/var series = FullMigraineData(TochengduData2015,true);/**设置迁出数据*///var series = FullMigraineData(FromchengduData2016,false);/**设置地图样式(可修改样式)*/option = {backgroundColor: '#121212',title : {text: '模拟迁徙',subtext: '数据纯属虚构',left: 'center',textStyle : {color: '#fff'}},tooltip : {trigger: 'item'},legend: {orient: 'vertical',top: 'bottom',left: 'right',data:['成都 Top10'],textStyle: {olor: '#fff'},selectedMode: 'single'},geo: {map: 'china',label: {emphasis: {show: false}},roam: true,itemStyle: {normal: {areaColor: '#323c48',borderColor: '#404a59'},emphasis: {areaColor: '#2a333d'}}},series: series};//绑定迁徙地图var myChart = echarts.init(document.getElementById('MigraineMap'));myChart.setOption(option);
利用百度Echart库,完成简单迁徙图相关推荐
- Mapbox + ECharts 实现简单迁徙图
文章目录 概述 预览效果 实现代码 说明 相关链接 概述 ECharts是开源的可视化图表库,其中有丰富的图表.本文使用Mapbox结合ECharts插件实现了简单的迁徙地图. 预览效果 实现代码 & ...
- 霍兰德人格分析:利用Python第三方库matplotlib绘制雷达图
美国约翰霍普金斯大学霍兰德教授认为,个人职业兴趣特性与职业之间应有一种内在的对应关系.根据兴趣的不同,人格可分为研究型(I).艺术型(A).社会型(S).企业型(E).传统型(C).现实型(R)六个维 ...
- Python学习-Matplotlib库绘制简单点阵图、线型图操作
Python学习-Matplotlib库绘制简单散点图图和线型图.标签设置以及刻度线设置操作 目录 1.Matplotlib绘图细节的简单理解 2.绘制点图.线型图 3.给图表设置复杂标注 4.移动刻 ...
- 利用Python Matplotlib库做简单的视觉化(2)
Matplotlib练习 题目 练习一 方法一(条形图) 方法一效果图 方法二(扇形图) 方法二效果图 练习二 练习二代码 练习二效果图 小结 题目 练习一 方法一(条形图) from matplot ...
- 利用Python Matplotlib库做简单的视觉化
Matplotlib练习 练习一 题目 代码 效果图 练习二 题目 练习1代码 练习1效果图 练习2代码 练习2效果图 小结 练习一 题目 代码 import matplotlib.pyplot as ...
- Python利用百度AI库颜值分析(包括脸型情绪颜值打分)
导入库 from aip import AipFace import base64 import time from PIL import Image,ImageDraw,ImageFont from ...
- create-react-app 结合百度地图和Echarts3.0迁徙图
一.创建create-react-app脚手架 npm install -g create-react-app create-react-app my-app /* 去 ...
- vue中使用echarts和百度地图实现飞机迁徙图
在vue-cli生成的项目中使用echarts和百度地图api实现飞机迁徙图,当然也可以实现其他效果. 1. 准备 项目安装echarts 在已经生成的vue项目根目录npm install echa ...
- pygal的简单应用:利用pygal库分别绘制雷达图、柱状图和折线图
在Python中,pygal 是一个常用数据可视化的数据图库,它以面向对象的方式来创建各种数据图,而且使用 pygal 可以非常方便地生成各种格式的数据图,包括 PNG.SVG.JPG .GIF等.使 ...
最新文章
- .net中用Action等委托向外传递参数
- python批量读取tiff文件_Python图像分析:从共焦显微镜读取多维TIFF文件
- 【数据库bug修复】——Authentication plugin ‘caching_sha2_password‘ is not supported
- jboss 配置上下文路径_为单个Web应用程序配置多个上下文根– JBoss
- java 循环stringbuffer_java常用类-----StringBuilder和StringBuffer的用法
- 【Java】Java反射异常处理之InvocationTargetException
- python读取fiddler_Python3.x+Fiddler抓取APP数据
- android nexus 刷机工具包,Android Nexus 6p刷机及root
- css行内样式的属性设置,css的外部样式的设置
- 云主机 环境搭配 交接文档
- 10068---谈谈Runtime类中的freeMemory,totalMemory,maxMemory几个方法
- PS 如何制作WIN7的玻璃化透明窗口效果
- SSM整合完整流程讲解
- JBoss,Geronimo还是Tomcat?——三种开源Java应用服务器的比较
- Linux 下 ls -l 命令执行显示结果的每一列含义
- 恒压板框过滤实验数据处理_内江靠谱压滤机板框-清源环保
- GRDDC2020数据集下载及介绍
- 青少年软件编程(202209)(C语言)(数据结构)等级考试(六级)试题及参考答案
- ISIS Neighbor Net Type DIS
- 商业智能BI的未来,如何看待AI+BI这种模式?
热门文章
- 搞深度学习用什么笔记本最好?这份报告给你选出了性价比之王
- 历届试题 矩阵翻硬币
- Windows日志筛选
- 手绘 | 深入解析风控8大场景中的机器学习应用
- 【FMCW 04】测角-Angle FFT
- python输出json到文件_Python:JSon输出到文件(Python : JSon Output to a file)
- 马士兵oracle安装视频教程,马士兵oracle视频教程笔记
- threejs地球、星空、世界轮廓绘制、飞线、坐标涟漪 、旋转动画(上篇)
- 智能手机成为隐私恶梦的四大原因
- 【CAN模块】解决主控内部无终端电阻两路CAN外部回环通信问题