【Echarts散点地图可视化】

Echarts散点地图可视化

一、vue项目安装echarts

npm install echarts --save

二、视图组件中引入echarts

  import * as echarts from 'echarts';

三、在mounted钩子函数中初始化Echarts

<div id="main"  :style="{width: '100%', height: '100%',fontSize:'100%'}">
mounted() {
          var chartDom = document.getElementById('main');
          this.myChart = echarts.init(chartDom,'light');
          this.loadMap()  //绘制图表
      },

四、引入百度地图相关配置文件及echarts的option配置文件

import option from './utils/citydata.js'
import {loadBMap} from './utils/map.js'

map.js (动态引入百度地图sdk的封装函数,参数ak为在百度开发平台注册得到的 access key)

import BMap from 'echarts/dist/extension/bmap.js'

export function loadBMap(ak) {
    return new Promise(function(resolve, reject) {
        if (typeof BMap !== 'undefined') {
            resolve(BMap)
            return true
        }
        window.onBMapCallback = function() {
            resolve(BMap)
        }
        let script = document.createElement('script')
        script.type = 'text/javascript'
        script.src =
            'https://api.map.baidu.com/api?v=2.0&ak='+ ak +'&__ec_v__=20190126&callback=onBMapCallback'
        script.onerror = reject
        document.head.appendChild(script)
    })
}

citydata.js (echarts的options配置)

// 导入所有的省市经纬度坐标
import country from './provincesAndCitys.js'
function option(data){
  const convertData = function (data) {
    var res = [];
    for (var i = 0; i < data.length; i++) {
      var geoCoord = country[data[i].name];
      if (geoCoord) {
        res.push({
          name: data[i].name,
          value: geoCoord.concat(data[i].value)
        });
      }
    }
    return res;
  };
  return {
    title: {
      text: '全国靓号分布',
      left: 'center'
    },
    tooltip: {
      trigger: 'item'
    },
    bmap: {
      center: [104.114129, 37.550339],
      zoom: 6,
      nameMap:{
        'China' : '中国'
      },
    roam: true,
    mapStyle: {
      styleJson: [
        {
          featureType: 'water',
          elementType: 'all',
          stylers: {
            color: '#d1d1d1'
          }
        },
        {
          featureType: 'land',
          elementType: 'all',
          stylers: {
            color: '#f3f3f3'
          }
        },
        {
          featureType: 'railway',
          elementType: 'all',
          stylers: {
            visibility: 'off'
          }
        },
        {
          featureType: 'highway',
          elementType: 'all',
          stylers: {
            color: '#fdfdfd'
          }
        },
        {
          featureType: 'highway',
          elementType: 'labels',
          stylers: {
            visibility: 'off'
          }
        },
        {
          featureType: 'arterial',
          elementType: 'geometry',
          stylers: {
            color: '#fefefe'
          }
        },
        {
          featureType: 'arterial',
          elementType: 'geometry.fill',
          stylers: {
            color: '#fefefe'
          }
        },
        {
          featureType: 'poi',
          elementType: 'all',
          stylers: {
            visibility: 'off'
          }
        },
        {
          featureType: 'green',
          elementType: 'all',
          stylers: {
            visibility: 'off'
          }
        },
        {
          featureType: 'subway',
          elementType: 'all',
          stylers: {
            visibility: 'off'
          }
        },
        {
          featureType: 'manmade',
          elementType: 'all',
          stylers: {
            color: '#d1d1d1'
          }
        },
        {
          featureType: 'local',
          elementType: 'all',
          stylers: {
            color: '#d1d1d1'
          }
        },
        {
          featureType: 'arterial',
          elementType: 'labels',
          stylers: {
            visibility: 'off'
          }
        },
        {
          featureType: 'boundary',
          elementType: 'all',
          stylers: {
            color: '#fefefe'
          }
        },
        {
          featureType: 'building',
          elementType: 'all',
          stylers: {
            color: '#d1d1d1'
          }
        },
        {
          featureType: 'label',
          elementType: 'labels.text.fill',
          stylers: {
            color: '#999999'
          }
        }
      ]
    }

  },
  series: [
    {
      name: '靓号数量',
      type: 'scatter',
      coordinateSystem: 'bmap',
      data: convertData(data),
      symbolSize: function (val) {
       if(val[2] < 1000){
         return 10
       }
       else if(val[2] > 1000 && val[2] < 3000){
         return 20
       }
       else {
         return 30
       }
      },
      encode: {
        value: 2
      },
      label: {
        formatter: '{b}',
        position: 'right',
        show: false
      },
      emphasis: {
        label: {
          show: true
        },
        scale:true
      }
    },
    {
      name: 'Top10',
      type: 'effectScatter',
      coordinateSystem: 'bmap',
      data: convertData(
        data
          .sort(function (a, b) {
            return b.value - a.value;
          })
          .slice(0, 10)
      ),
      symbolSize: function (val) {

        if(val[2] < 20000){
          return val[2] / 250
        }else{
          return val[2] / 820
        }
      },
      encode: {
        value: 2
      },
      showEffectOn: 'render',
      rippleEffect: {
        brushType: 'stroke'
      },
      label: {
        formatter: '{b}',
        position: 'right',
        show: true
      },
      itemStyle: {
        shadowBlur: 10,
        shadowColor: '#333'
      },
      emphasis: {
        scale: true
      },
      zlevel: 1
    }
  ],

};
}

export default option

provinceAndCitys.js (全国所有省、市的经纬坐标)
下载地址:
链接: https://pan.baidu.com/s/1N8cWnfDJSbL7HIcyM1b2FA 提取码: qvlh

methods:{
// 配置图表option
       drawChart(){
          option && this.myChart.setOption({
            ...option(this.data)
          },true)
       },
  // 绘制图表
      loadMap(){
        this.$nextTick(()=>{
          loadBMap("UxtAMVR9pdiUt99IaA0h9Z9lKQxUDC87").then(()=>{
            this.drawChart()
          })
        })
      },
}

loadMap方法传入的参数为你在百度开发平台注册得到的 access key

五、当视图组件销毁的时候,销毁echarts

 beforeUnmount() {
        this.myChart.dispose()
      },

最终效果:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ECharts 是百度开源的一个数据可视化库,它支持包括百度地图在内的多种图表类型。 要在百度地图上进行可视化,可以使用 ECharts 中的 `map` 类型,并将 `geo.map` 属性设置为 `'china'` 或 `'world'`,以显示中国或世界地图。然后,您可以使用 ECharts 的数据可视化语法来绘制地图上的各种图形,如散点图、热力图、线段图等。 以下是一个简单的示例,演示了如何使用 ECharts 在百度地图上绘制一个散点图: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts 百度地图可视化示例</title> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script> </head> <body> <div id="container" style="height: 600px;"></div> <script> // 初始化 ECharts 实例 var chart = echarts.init(document.getElementById('container')); // 定义数据 var data = [ {name: '北京', value: [116.46, 39.92]}, {name: '上海', value: [121.48, 31.22]}, {name: '广州', value: [113.23, 23.16]}, {name: '深圳', value: [114.07, 22.62]}, {name: '成都', value: [104.06, 30.67]} ]; // 设置地图类型和中心点 var geoCoordMap = { '北京': [116.46, 39.92], '上海': [121.48, 31.22], '广州': [113.23, 23.16], '深圳': [114.07, 22.62], '成都': [104.06, 30.67] }; var geo = { map: 'china', center: [106.4, 38.5], zoom: 4, roam: true }; // 绘制散点图 var option = { bmap: { center: [106.4, 38.5], zoom: 4, roam: true }, series: [ { type: 'scatter', coordinateSystem: 'bmap', data: data, symbolSize: 10, label: { show: true, formatter: '{b}' }, itemStyle: { color: 'purple' } } ] }; chart.setOption(option); </script> </body> </html> ``` 在这个示例中,我们使用了 ECharts 的 `scatter` 类型来绘制散点图,将 `coordinateSystem` 属性设置为 `'bmap'`,表示使用百度地图作为坐标系。我们还定义了一个包含城市坐标的 `geoCoordMap` 对象,用于设置散点图的位置。最后,我们将 `bmap` 属性设置为地图的中心点和缩放级别,以及 `series` 属性设置为散点图的数据和样式。通过设置这些属性,我们可以在百度地图上绘制一个简单的散点图。 如果您想了解更多关于 ECharts 和百度地图可视化的内容,可以访问 ECharts 官方文档:https://echarts.apache.org/zh/index.html。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值