转载来源:https://efe.baidu.com/blog/echarts-map-tutorial/

ECharts 实现地图散点图(上)

 小红  2016-04-28  ECharts教程地图

ECharts 作为国内应用最广泛的前端可视化生成工具,提供了丰富的图表展现方式和便捷的图表操作。 ECharts 支持 geoJson 格式的地图,并且官网上提供了现成的 world,china 及全国34个省市自治区地图的下载。这篇文章中我们将会讲解如何使用 ECharts 实现一个中国地图上绘制的散点图。

一、初始准备

1. 新建html

首先,新建项目目录 echartsMapDemo,在其中新建一个 html 文件 index.html

echartsMapDemo/index.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ECharts map Demo</title>
</head>
<body>
</body>
</html>

2.引入echarts文件

从 echarts官网 下载最新完整开发包(目前最新版本是3.1.4)。

将下载好的包放置在 echartsMapDemo/dep 目录下并在 html 中以 script 标签引入:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ECharts map Demo</title>
</head>
<body>
</body> <script src="/dep/echarts.min.js"></script> </html>

3.创建图标容器

在 html 中定义一个 div 作为地图的容器,高度设为 500px 。别忘了,一定要保证容器高度不为 0:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ECharts map Demo</title>
</head>
<body> <div id="map-wrap" style="height: 500px;">
<!-- 这里以后是地图 -->
</div> </body>
<script src="/dep/echarts.min.js"></script>
</html>

然后,我们还需要一个地图文件,echart 提供两种格式的地图数据,一种是 js 格式,一种是 JSON 格式。下文中我们会分别使用这两种方式实现。

同样去 官网 上下载,这里选择下载中国地图 china.js 或 china.json 。你也可以根据需要选择其他省份地图或世界地图

好了,准备工作完成,现在就开始绘制地图了~

二、绘制地图

echart 提供两种格式的地图数据,一种是 js 格式,一种是 JSON 格式。下面分别介绍两种格式的用法:

引用js格式地图数据:

1.在官网上下载 js 格式中国地图 china.js,将下载好的 china.js 放在 echartsMapDemo/map/js 目录下,以 script 标签引入到 html 中:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ECharts map Demo</title>
</head>
<body>
<div id="map-wrap" style="height: 500px;">
<!-- 这里以后是地图 -->
</div>
</body>
<script src="/dep/echarts.min.js"></script> <script src="/map/js/china.js"></script> </html>

2.在js中用 echarts.init() 方法初始化一个 ECharts 实例,在 init() 中传入图表容器 Dom 对象,

同时定义一个变量 option,作为图表的配置项:

// 初始化echarts示例mapChart
var mapChart = echarts.init(document.getElementById('map-wrap')); // mapChart的配置
var option = { };

3.通过配置 option,新建一个地理坐标系 geo ,地图类型为中国地图。

var option = {
geo: {
map: 'china'
}
}

geo.map 属性定义该地理坐标系中的地图数据,这里我们要用 china.js ,设置map值为 'china'。

这里需要注意,中国地图的map值为 'china' ,世界地图的map值为 'world' ,但如果要引用省市自治区地图 map 值为简体中文,例如 beijing.js,map 值为'北京'。

4.调用 setOption(option) 为图表设置配置项。

mapChart.setOption(option);

引用JSON格式地图数据:

1.同样在官网下载JSON格式的地图数据,放在echartsMapDemo/map/json目录下

2.json数据通过异步方式加载,加载完成后需要手动注册地图

这里我们使用 jQuery 的 $.get() 方法异步加载 china.json (首先要在html中引用 jquery ,这里省略操作说明),在回调函数中,以上述同样的方法初始化一个 mapCharts 、注册地图并设置 option:

$.get('map/json/china.json', function (chinaJson) {

		echarts.registerMap('china', chinaJson); // 注册地图

		var mapChart = echarts.init(document.getElementById('map-wrap'));

  		var option = {
geo: {
map: 'china'
}
} mapChart.setOption(option); });
});

现在就可以在页面中看到中国地图了:

地图

为了突出散点效果,先为地图改个颜色

var option = {
geo: {
map: 'china', itemStyle: { // 定义样式
normal: { // 普通状态下的样式
areaColor: '#323c48',
borderColor: '#111'
},
emphasis: { // 高亮状态下的样式
areaColor: '#2a333d'
}
}
},
backgroundColor: '#404a59', // 图表背景色
}

换装后的地图:

中国地图底图

三、绘制散点图


1.新建散点图series

在 option 中添加一个 series , series 的类型为散点图 scatter ,坐标系为地理坐标系 geo 。

var option = {
geo: {
...
},
backgroundColor: '#404a59', series: [
{
name: '销量', // series名称
type: 'scatter', // series图表类型
coordinateSystem: 'geo' // series坐标系类型
}
]
}

2.添加数据

ECharts 中 series.data 是定义图表数据内容的数组,其中每个项数据格式为:

{
name: '北京', // 数据项名称,在这里指地区名称 value: [ // 数据项值
116.46, // 地理坐标,经度
39.92, // 地理坐标,纬度
340 // 北京地区的数值
]
}

首先我们将需要渲染的数据转换成上述数据格式,存在一个变量中:

var myData = [

	{name: '海门', value: [121.15, 31.89, 90]},
{name: '鄂尔多斯', value: [109.781327, 39.608266, 120]},
{name: '招远', value: [120.38, 37.35, 142]},
{name: '舟山', value: [122.207216, 29.985295, 123]},
...
]

然后,将 myData 赋值给 series.data:

var option = {
geo: {
...
},
backgroundColor: '#404a59',
series: [
{
name: '销量',
type: 'scatter',
coordinateSystem: 'geo', data: myData // series数据内容
}
]
}

数据添加完成,就可以在图表中看到渲染出的散点了:

散点图1

3.添加视觉映射组件

视觉映射组件是标识某一数据范围内数据及颜色对应关系的控件,视觉映射组件分为连续型和分段型,这里我们选用连续型 type:continuous 。同时,通过视觉映射组件可以实现 ECharts 值域漫游功能,即通过拖拽控件手柄选择不同数值范围,达到对图表数据的筛选显示。 在 visualMap 属性中设置值域控件的相关配置:

var option = {
... visualMap: {
type: 'continuous', // 连续型
min: 0, // 值域最小值,必须参数
max: 200, // 值域最大值,必须参数
calculable: true, // 是否启用值域漫游
inRange: {
color: ['#50a3ba','#eac736','#d94e5d']
// 指定数值从低到高时的颜色变化
},
textStyle: {
color: '#fff' // 值域控件的文本颜色
}
}
}

添加了值域控件的图表效果:

散点图2

这样一个基于中国地图的散点图就基本实现了,如果想要继续完善图表,可以为它添加标题,图例,高亮提示等控件,配置方式在这里查看(ECharts 配置项手册),在此不再详细说明。

ECharts 实现地图散点图上(转载)的更多相关文章

  1. ECharts 散点图+百度地图(案例转载)

    转载来源:https://efe.baidu.com/blog/echarts-map-tutorial-2/ ECharts 实现地图散点图(下)  小红  2016-06-13  ECharts, ...

  2. Echarts 设置地图上文字大小及颜色

    Echarts 设置地图上文字大小及颜色,效果如下: 上代码:关键代码用红色 series: [ { //name: '香港18区人口密度', type: 'map', mapType: 'jiang ...

  3. ECharts+百度地图网络拓扑应用

    前一篇谈及到了ECharts整合HT for Web的网络拓扑图应用,后来在ECharts的Demo中看到了有关空气质量的相关报表应用,就想将百度地图.ECharts和HT for Web三者结合起来 ...

  4. 数据视化Echarts+百度地图API实现市县区级下钻

    开始 这两天公司有个页面需要做数据可视化的展示,数据视化采用的是Echarts+百度地图API做展示,需要用到县级区级下钻的一个联动效果发现网上关于Echarts做到县区级下钻的资料很少,有的话也不是 ...

  5. 在页面使用echarts的地图(解决地图不完整)

    测试环境:IDEA+Tomcat7 谷歌浏览器 创建好web工程,编写jsp页面,在自己编写的JSP页面上导包 现在echarts停止了在其网站上下载地图脚本,直接通过src引用网站上的china.j ...

  6. echarts map 地图在react项目中的使用

    需求 展示海南省地图,点击市高亮展示,并在右侧展示对应市的相关数据. 准备工作 Echarts 海南地图json 效果图 代码 index.tsx import React, { useRef, us ...

  7. echarts的地图点击事件

    1.echarts的地图展示,有时候展示出的数据,虽然鼠标点击上去某个省份或者某个地方会有数据显示,但是点击一下地图没有任何动态效果,如何添加地图点击效果呢,这里自己也是坐下笔记,方便以后使用. 参考 ...

  8. echarts中国地图散点涟漪效果

    echarts中国地图例子:http://gallery.echartsjs.com/editor.html?c=effectScatter-map 代码: var data = [{ name: ' ...

  9. echarts中国地图

    echarts中国地图效果图: =================== 需要引入echarts的js文件:(1.echarts.min.js:2.china.js) 下载地址: echarts.min ...

随机推荐

  1. 前台页面long类型数字被四舍五入的解决办法

    转: 前台页面long类型数字被四舍五入的解决办法 2018-05-28 11:02:38 宣午刚001 阅读数 3566更多 分类专栏: java开发   版权声明:本文为博主原创文章,遵循CC 4 ...

  2. matlab学习笔记8 基本绘图命令-三维绘图

    一起来学matlab-matlab学习笔记8 基本绘图命令_6 三维绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 ...

  3. [LeetCode] 503. Next Greater Element II 下一个较大的元素 II

    Given a circular array (the next element of the last element is the first element of the array), pri ...

  4. idea的groovy设置

    idea的groovy设置 groovy使用的是java的jdk 新建groovy项目,第一次新建的时候,Groovy library是空的,需要点击右边的Create...新建. 但是由于brew ...

  5. 【计算机视觉】【神经网络与深度学习】YOLO v2 detection训练自己的数据2

    1. 前言 关于用yolo训练自己VOC格式数据的博文真的不少,但是当我按照他们的方法一步一步走下去的时候发现出了其他作者没有提及的问题.这里就我自己的经验讲讲如何训练自己的数据集. 2.数据集 这里 ...

  6. redis如何实现主从数据的同步

    Redis的主从同步机制可以确保redis的master和slave之间的数据同步.按照同步内容的多少可以分为全同步和部分同步:按照同步的时机可以分为slave刚启动时的初始化同步和正常运行过程中的数 ...

  7. Python MySQLdb 学习总结(转)

    转自http://www.cnblogs.com/coser/archive/2012/01/12/2320741.html 感谢@糖拌咸鱼 任何应用都离不开数据,所以在学习python的时候,当然也 ...

  8. [New!!!]欢迎大佬光临本蒟蒻的博客(2019.11.27更新)

    更新于2019.12.22 本蒟蒻在博客园安家啦!!! 本蒟蒻的博客园主页 为更好管理博客,本蒟蒻从今天开始,正式转入博客园. 因为一些原因,我的CSDN博客将彻底不会使用!!!(带来不便,敬请谅解) ...

  9. 【剑指offer】面试题 8. 二叉树的下一个结点

    面试题 8. 二叉树的下一个结点 NowCoder 题目描述 给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点?树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指 ...

  10. Netty 面试题解析

    1.Netty 是什么? Netty 是一款基于 NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于 BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提 ...