echarts学习之——电力迁徙图(一)

今天主要就是在搞echarts,我们都知道他为我们提供了丰富的api方法,使我们能够迅速的搭建图标。同时他里面还有许多的案例,

其中就有这么一个国内航线模拟迁徙的地图,如下所示:

而我们通常因为各种需求原因,不想要全国地图,而单单想要一个省,或一个市的地图,进行类似模拟迁徙的效果,就比如我接下来要做的这个效果图:

首先第一个案例中的demo代码我就不说了,可以到http://gallery.echartsjs.com/editor.html?c=xSyn_h87Sg 进行下载

接下来的步骤为:

1.

2.

3.这一步可以生成js 也可以生成json 两种方式引用的方法见下面的example.(我这边使用的是生成js)

这样就会自动生成并下载好一个js或是json格式的文件,将其导入到你的项目之中。

4.在编辑器中创建一个html文件

将刚刚生成的js或json导入进去(这里我仅演示js的方式)

注意:要先引入echart.min.js

5:不多说了,整个地图的代码如下:

  1 <!DOCTYPE html>
  2 <html style="height: 100%">
  3 <head>
  4     <meta charset="utf-8">
  5     <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
  6     <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
  7     <title>供电图</title>
  8     <link rel="stylesheet" type="text/css" href="../css/api.css" />
  9 </head>
 10 <body style="height: 100%; margin: 0 auto">
 11 <div id="container" style="height: 100%"></div>
 12 <script src="../script/echarts.min.js"></script>
 13 <script src="../script/NingBo.js"></script>
 14 <script type="text/javascript">
 15     var dom = document.getElementById("container");
 16     var myChart = echarts.init(dom);
 17     var app = {};
 18     option = null;
 19     var geoCoordMap = {
 20         ‘宁波市区‘:[121.55,29.88],
 21         ‘北仑区‘: [121.92000,29.848355],
 22         ‘慈溪市‘:[121.3,30.23],
 23         ‘奉化市‘:[121.32327,29.58],
 24         ‘宁海县‘:[121.433654,29.303559],
 25         ‘象山县‘:[121.810224,29.41238],
 26         ‘余姚市‘:[121.15,30.03],
 27         ‘镇海区‘:[121.64,30.05],
 28         ‘鄞州区‘:[121.644648,29.70591]
 29         };
 30
 31     var BJData = [
 32         [{
 33             name: ‘宁波市区‘
 34         }, {
 35             name: ‘北仑区‘,
 36             value: 10
 37         }],
 38         [{
 39             name: ‘北仑区‘
 40         }, {
 41             name: ‘慈溪市‘,
 42             value: 15
 43         }],
 44         [{
 45             name: ‘慈溪市‘
 46         }, {
 47             name: ‘奉化市‘,
 48             value:15
 49         }],
 50         [{
 51             name: ‘奉化市‘
 52         }, {
 53             name: ‘宁海县‘,
 54             value:15
 55         }],
 56         [{
 57             name: ‘宁海县‘
 58         }, {
 59             name: ‘象山县‘,
 60             value: 15
 61         }],
 62         [{
 63             name: ‘象山县‘
 64         }, {
 65             name: ‘余姚市‘,
 66             value: 20
 67         }],
 68         [{
 69             name: ‘余姚市‘
 70         }, {
 71             name: ‘镇海区‘,
 72             value: 15
 73         }],
 74         [{
 75             name: ‘镇海区‘
 76         }, {
 77             name: ‘鄞州区‘,
 78             value:15
 79         }],
 80         [{
 81             name: ‘鄞州区‘
 82         }, {
 83             name: ‘宁波市区‘,
 84             value: 15
 85         }]
 86     ];
 87
 88
 89 //自定义图标路径
 90     var iconPath = ‘image://light_icon.png‘;
 91
 92     var convertData = function(data) {
 93         var res = [];
 94         for (var i = 0; i < data.length; i++) {
 95             var dataItem = data[i];
 96             var fromCoord = geoCoordMap[dataItem[0].name];
 97             var toCoord = geoCoordMap[dataItem[1].name];
 98             if (fromCoord && toCoord) {
 99                 res.push({
100                     fromName: dataItem[0].name,
101                     toName: dataItem[1].name,
102                     coords: [fromCoord, toCoord]
103                 });
104             }
105         }
106         return res;
107     };
108
109     var color = [‘#a6c84c‘,‘#F10900‘,‘#00A0E9‘];
110     var series = [];
111     [
112         [‘‘, BJData]
113     ].forEach(function(item, i) {
114         series.push({
115             name: item[0],
116             type: ‘lines‘,
117             zlevel: 1,
118             //是否显示图标尾部效果
119             effect: {
120                 show: true,
121                 period: 6,
122                 trailLength: 0.6,
123                 color: ‘#FDF9AC‘,
124                 symbolSize: 2
125             },
126             lineStyle: {
127                 normal: {
128                     color: color[i+3],
129                     width: 0,
130                     curveness: 0.2
131                 }
132             },
133             data: convertData(item[1])
134         }, {
135             name: item[0],
136             type: ‘lines‘,
137             zlevel: 2,
138             effect: {
139                 show: true,
140                 period: 6,
141                 trailLength:0,
142 //              symbol: planePath,
143 //                symbol: ‘arrow‘,
144                 //自定义图标
145                 symbol:iconPath,
146                 symbolSize: 10
147             },
148             lineStyle: {
149                 normal: {
150                     color: color[i+1],
151                     width: 1,
152                     opacity: 0.4,
153                     curveness: 0.2
154                 }
155             },
156             data: convertData(item[1])
157         }, {
158             name: item[0],
159             type: ‘effectScatter‘,
160             coordinateSystem: ‘geo‘,
161             zlevel: 2,
162             rippleEffect: {
163                 brushType: ‘stroke‘
164             },
165             label: {
166                 normal: {
167                     show: true,
168                     position: ‘right‘,
169                     formatter: ‘{b}‘
170                 }
171             },
172             symbolSize: function(val) {
173                 return val[2] / 8;
174             },
175             itemStyle: {
176                 normal: {
177                     color: color[i]
178                 }
179             },
180             data: item[1].map(function(dataItem) {
181                 return {
182                     name: dataItem[1].name,
183                     value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
184                 };
185             })
186         });
187     });
188
189     option = {
190         //网页背景部分
191         backgroundColor: ‘#89C3DB‘,
192         title: {
193             text: ‘浙江宁波供电路线‘,
194             subtext: ‘数据虚构‘,
195             left: ‘center‘,
196             textStyle: {
197                 color: ‘#fff‘
198             }
199         },
200         tooltip: {
201             trigger: ‘item‘
202         },
203         legend: {
204             orient: ‘vertical‘,
205             top: ‘bottom‘,
206             left: ‘right‘,
207             data: [],
208             textStyle: {
209                 color: ‘#fff‘
210             },
211             selectedMode: ‘single‘
212         },
213         geo: {
214             //
215             map: ‘ningbo‘,
216             label: {
217                 emphasis: {
218                     show: true
219                 }
220             },
221             roam: true,
222             itemStyle: {
223                 normal: {
224                     areaColor: ‘#008a49‘,
225                     borderColor: ‘#4b9673‘
226                 },
227                 emphasis: {
228                     areaColor: ‘#119859‘
229                 }
230             }
231         },
232         series: series
233     };
234     if (option && typeof option === "object") {
235         myChart.setOption(option, true);
236     }
237 </script>
238 </body>
239 </html>

6.关于一些自定义图标的修改,建议去http://www.iconfont.cn/ 中寻找

比如我的那个闪电图标就是在这个

Iconfont-阿里巴巴矢量图标库

找到的!

这个是echarts中修改自定义图标的详细方法!

希望对新手能有所帮助!

时间: 2024-11-08 19:24:18

echarts学习之——电力迁徙图(一)的相关文章

arcgis api 4.x for js 集成 Echarts4 实现模拟迁徙图效果(附源码下载)

前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 4.x for js:esri 官网 api,里面详细的介绍 arcgis api 4.x 各个类的介绍,还有就是在线例子:esri 官网在线例子,这个也是学习 arcgis api 4.x 的好素材. arcgis api 4.x for js 集成 echarts 实现迁徙图效果的关键问题在于 echarts 坐标系以及 arcgis 坐标系不一致,因此要进行 echarts坐标系与 arc

echarts学习总结

ECharts学习总结使用步骤1 引入ECharts <script src="echarts.min.js"></script>2 绘制一个简单的图表 为ECharts准备具备宽高的DOM容器 然后就可以通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图 //基于准备好的dom,初始化echarts实例var myChart=echarts.init(document.getElementB

vue中使用 echarts3.0 或 echarts2.0 (模拟迁徙图,折线图)

一.echarts3.0(官网: http://echarts.baidu.com/) 首先通过npm安装echarts依赖,安装的为3.0版本 npm install echarts -s 也可以使用淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm install echarts -s 引入的方式有两种: 1.main.js中全局引入 import echarts from 'echarts' Vu

存储技术研究与学习资料思维导图

最近迪迪老师给推荐了一个不错的思维导图工具--Mind42,对于梳理知识很有帮助,于是索性将存储技术研究与学习的一些资料进行了整理,导出图如下所示,更具体的内容可以通过猛击"点我"访问. 存储技术研究与学习资料思维导图,布布扣,bubuko.com

ThinkPHP学习(五)图上验证码

前言 不管这篇写到哪里,就以这篇作为结尾,结束这个流水回顾系列文了. Computer History Museum 计算机历史博物馆(网站)是在Google旁边,参观Google之前的行程. 记得那是一个阳光明媚的日子,在前往硅谷朝圣的路上,内心还是有点小激动的. 临走前我买了顶帽子作纪念,也刚好用来抵御湾区的大太阳. Google 大家在计算机历史博物馆外合影了一张,然后就奔赴Google了. 上图的小机器人们很有趣. Google的园区自行车很绚烂,让我联想到Chrome. 接着见识了传说

干货 | 可视化设计:地图四部曲之迁徙图

再过一个月的时间,2017年春运将会浩浩荡荡的开始,作为一名分析师你肯定很想看看用什么样的可视化图形来动态展示人员的流动情况.那么,我们今天就来看看用OpenFEA如何设计迁徙图. 1.什么是迁徙图 迁徙图,是对收集的用户定位数据,采用基于地理位置的大数据分析后,用"地图+单向迁移线路图"的可视化呈现方式,来动态显示人员的流向情况.具有动态.即时.直观地展现数据流向的轨迹与特征. 2.设计过程 第一步.登录 在浏览器中输入OpenFEA官网地址(http://www.openfea.c

Core Graphics 学习——1 两张图合成为一张图

-(UIImage *)MergeTwoImage { UIImage * img =[UIImage imageNamed:@"icon"]; CGSize sz = img.size; UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width*2, sz.height), NO, 0); [img drawAtPoint:CGPointMake(0, 0)]; [img drawAtPoint:CGPointMake(sz

JS学习笔记--轮播图效果

希望通过自己的学习收获哪怕收获一点点,进步一点点都是值得的,加油吧!!! 本章知识点:index this for if else 下边我分享下通过老师教的方式写的轮播图,基础知识实现: 1.css代码 <style> ul, ol { padding:0; margin:0; } li { list-style:none; } #box { width:600px; height:350px; border:10px solid #ccc; margin:0 auto; position:r

javascript学习之思维导图

在新浪微博上看到@SinaAppEngine发表的关于javascript学习的思维导图,感觉很好.记录一下. 感谢@SinaAppEngine.