首页编程开发ECharts【数据可视化(EChart...

【数据可视化(ECharts篇)】34.地理数据可视化——地理散点图

本系列文章配套代码获取有以下两种途径:

  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1W26KrZK7RjwgxvulccTA9w?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Data_Visualization





ECharts中绘制地理散点图其实很简单,只需要将series中的type设置为scatter,然后将坐标系coordinateSystem设置为百度地图bmap即可。

01
数据处理

绘制地理散点图主要是数据的处理过程,可以使用python预先处理好,也可以在代码中使用JS操作。

绘制地理散点图的数据推荐使用如下格式:

1{name:数据名称 ,
2 value:[经度, 纬度, 要展现的数据]}

例如,本次有以下两个数据:

  • 各城市空气质量数据

1    const PM25data = [
2        { name: '招远'value12 },
3        { name: '青岛'value18 },
4        { name: '乳山'value18 },
5        { name: '莱西'value21 },
6        { name: '日照'value21 },
7 ......
8    ];
  • 各城市经纬度坐标数据

1    const geoCoordMap = {
2        招远: [120.3837.35],
3        青岛: [120.3336.07],
4        乳山: [121.5236.89],
5        莱西: [120.5336.86],
6        日照: [119.4635.42],
7        ......
8    };

需要处理成如下格式:

1[
2{name:'招远' ,value:[120.38, 37.35, 12
]},
3{name:'青岛' ,value:[120.3336.0718]},
4{name:'乳山' ,value:[121.5236.8918]},
5......
6]

数据处理代码如下所示:

 1    // 各城市空气质量数据
2    const PM25data = [
3        { name: '招远'value12 },
4        { name: '青岛'value18 },
5        { name: '乳山'value18 },
6        { name: '莱西'value21 },
7        { name: '日照'value21 },
8        { name: '文登'value25 },
9        { name: '威海'value25 },
10        { name: '烟台'value28 },
11        { name: '即墨'value30 },
12        { name: '莱州'value32 },
13        { name: '荣成'value34 },
14        { name: '营口'value37 },
15        { name: '蓬莱'value37 },
16        { name: '寿光'value40 },
17        { name: '平度'value44 },
18        { name: '胶州'value52 },
19        { name: '东营'value62 },
20        { name: '潍坊'value65 },
21        { name: '滨州'value70 },
22        { name: '枣庄'value84 },
23        { name: '淄博'value85 },
24        { name: '济南'value92 },
25        { name: '临沂'value103 },
26        { name: '泰安'value112 },
27        { name: '聊城'value116 },
28        { name: '德州'value120 },
29        { name: '济宁'value120 },
30        { name: '莱芜'value148 },
31        { name: '菏泽'value194 },
32    ];
33
34    // 各城市经纬度坐标数据
35    const geoCoordMap = {
36        招远: [120.3837.35],
37        青岛: [120.3336.07],
38        乳山: [121.5236.89],
39        莱西: [120.5336.86],
40        日照: [119.4635.42],
41        文登: [122.0537.2],
42        威海: [122.137.5],
43        烟台: [121.3937.52],
44        即墨: [120.4536.38],
45        莱州: [119.94232737.177017],
46        荣成: [122.4137.16],
47        营口: [122.1840.65],
48        蓬莱: [120.7537.8],
49        寿光: [118.7336.86],
50        平度: [119.9736.77],
51        胶州: [120.0333636.264622],
52        东营: [118.4937.46],
53        潍坊: [119.136.62],
54        滨州: [118.0337.36],
55        枣庄: [117.5734.86],
56        淄博: [118.0536.78],
57        济南: [11736.65],
58        临沂: [118.3535.05],
59        泰安: [117.1336.18],
60        聊城: [115.9736.45],
61        德州: [116.2937.45],
62        济宁: [116.5935.38],
63        莱芜: [117.6736.19],
64        菏泽: [115.48065635.23375],
65    };
66
67    // 数据转换操作
68    // {name:'招远' , value:[120.38, 37.35, 12]}
69    const convertData = function(PM25data) {
70        var res = [];
71        for (var i = 0; i < PM25data.length; i++) {
72            var geoCoord = geoCoordMap[PM25data[i].name]
73            if (geoCoord) {
74                res.push({
75                    name: PM25data[i].name,
76                    value: geoCoord.concat(PM25data[i].value)
77                })
78            }
79        }
80        return res;
81    }


02
绘制地理散点图

处理完数据后,就可以绘制地理散点图。 

因为本次通过引入外部json文件来设置地图样式,因此使用到了异步加载数据的内容。如若不清楚该内容可以查看以下文章:

27.数据的异步加载

在图表参数设置部分,除了在series需要设置coordinateSystem: "bmap",其余部分与二维图表类似,在此就不做过多介绍了。

代码如下所示:

 1    $.getJSON('styleJson.json'function(styleJson{
2
3        // 设置图表的参数
4        var option = {
5            // bmap组件
6            bmap: {
7                center: [117.13556136.678781], // 地图中心点坐标
8                zoom: 8// 地图层级
9                roam: true// 可以对地图进行缩放
10                // 地图底图样式设置
11                mapStyle: {
12                    styleJson: styleJson
13                }
14            },
15
16            title: {
17                text"山东省城市空气质量",
18                subtext"数据来源:http://www.pm25.in",
19                left"center"
20            },
21
22            // 提示框
23            tooltip: {
24                // 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用
25                trigger: 'item'
26            },
27
28            // 数据系列
29            series: [{
30                name"pm2.5",
31                type"scatter",
32                coordinateSystem"bmap",
33                data: convertData(PM25data),
34                encode: { value2 },
35                symbolSizefunction(val{
36                    return val[2] / 5
37                },
38                // 图形上的文本标签
39                label: {
40                    formatter"{b}",
41                    position"right",
42                    showfalse
43                },
44                // 高亮的图形和标签样式
45                emphasis: {
46                    label: {
47                        showtrue,
48                        color:"red",
49                    },
50                    itemStyle:{
51                        color:"red"
52                    }
53                }
54            }],
55        };

可视化结果如下图所示:


更多参数和配置可以查看官方文档:

1https://echarts.apache.org/zh/option.html


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments