echarts迁徙图 vue_【可视化插件】Vue项目中Echarts流向图迁徙图实现

public render() { //图表绘制方法

this.chart.clear();

const isMock = !this.items.length;

const items = isMock ? Visual.mockItems : this.items;

this.container.style.opacity = isMock ? '0.3' : '1';

const options = this.properties;

let planePath = options.effect ? options.symbol : options.symbolStyle;

let departureValue = isMock ? ['北京', '上海', '广州市'] : this.legendData;

let color = isMock ? ['#a6c84c', '#ffa022', '#46bee9'] : options.palette;

var series = [];

items.map((item: any, i: number) => {

if (item.length) {

let j = i % color.length;

series.push({

name: item[0].fromName,

type: 'lines',

zlevel: 1,

effect: {

show: true,

period: options.period,

trailLength: 0.7,

color: color[j],

symbolSize: 4},

lineStyle: {

normal: {

color: color[j],

width: 0.1,

curveness: 0.2 } },

data: item },

{

name: item[0].fromName,

type: 'lines',

zlevel: 2,

symbol: ['none', 'arrow'],

symbolSize: 10,

effect: {

show: true,

period: options.period,

trailLength: 0,

symbol: planePath,

symbolSize: options.symbolSize },

lineStyle: {

normal: {

color: color[j],

width: 1,

opacity: 0.6,

curveness: 0.2 } },

data: item},

{

name: item[0].fromName,

type: 'effectScatter',

coordinateSystem: 'geo',

zlevel: 2,

rippleEffect: {

brushType: 'stroke' },

label: {

normal: {

show: true,

position: "right", //显示位置

offset: [5, 0], //偏移设置

formatter: "{b}" //圆环显示文字 },

emphasis: {

show: true } },

symbolSize: options.pointSize,

itemStyle: {

normal: {

color: color[j] } },

data: this.parseData(item) } ); } });

var option = {

tooltip: {

trigger: 'item',

formatter: function (params, ticket, callback) {

if (params.seriesType == "lines") {

return params.data.fromName + " --> " + params.data.toName + "
" + params.data.value;

} else {

return params.name; } } },

legend: {

show: options.showLegend,

orient: 'vertical',

top: 'bottom',

left: 'right',

data: departureValue,

textStyle: {

color: '#fff' },

selectedMode: 'multiple', },

geo: {

map: options.mapName,

label: {

emphasis: {

sfalsehow: true,

color: '#fff' } },

roam: options.roam,

layoutCenter: ["50%", "50%"], //地图位置

layoutSize: "125%",

itemStyle: {

normal: {

borderColor: options.borderColor,

borderWidth: 1,

areaColor: {

type: 'radial',

x: 0.5,

y: 0.5,

r: 0.8,

colorStops: [{

offset: 0,

color: options.startColor // 0% 处的颜色

}, {

offset: 1,

color: options.endColor // 100% 处的颜色 }], },

shadowColor: options.shadowColor,

shadowOffsetX: -2,

shadowOffsetY: 2,

shadowBlur: 10 },

emphasis: {

areaColor: options.emphasisColor,

borderWidth: 0 } } },

series: series };

this.chart.setOption(option); }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 Vue 高德地搭配 Echarts 迁徙的步骤如下: 1. 安装依赖 ``` npm install echarts vue-echarts vue-amap --save ``` 2. 在 main.js 引入依赖 ```javascript import Vue from 'vue' import VueAMap from 'vue-amap' import ECharts from 'vue-echarts' // 引入 ECharts 主题和扩展模块 import 'echarts/lib/chart/map' import 'echarts/lib/chart/effectScatter' import 'echarts/lib/component/tooltip' import 'echarts/lib/component/title' import 'echarts/lib/component/legend' // 注册 ECharts 组件 Vue.component('v-chart', ECharts) // 初始化高德地插件 Vue.use(VueAMap) VueAMap.initAMapApiLoader({ key: '你的高德地 api key', plugin: ['AMap.DragRoute'] }) ``` 3. 在组件使用 ```vue <template> <div> <v-chart class="chart" :options="options" /> </div> </template> <script> export default { data() { return { options: { tooltip: { trigger: 'item' }, legend: { orient: 'vertical', top: 'bottom', left: 'right', data: ['流入', '流出'] }, series: [ { name: '迁徙', type: 'lines', zlevel: 1, effect: { show: true, period: 6, trailLength: 0.7, color: '#fff', symbolSize: 3 }, lineStyle: { normal: { color: '#a6c84c', width: 0, curveness: 0.2 } }, data: [ { fromName: '北京', toName: '上海', coords: [ [116.407394, 39.904211], [121.473662, 31.230372] ] }, { fromName: '北京', toName: '广州', coords: [ [116.407394, 39.904211], [113.280637, 23.125178] ] } ] }, { name: '流入', type: 'map', mapType: 'china', roam: false, label: { normal: { show: true }, emphasis: { show: true } }, itemStyle: { normal: { borderWidth: 0.5, borderColor: '#009fe8', areaColor: '#fff' }, emphasis: { areaColor: '#009fe8' } }, data: [ { name: '北京', value: 100 }, { name: '上海', value: 200 }, { name: '广州', value: 300 } ] }, { name: '流出', type: 'map', mapType: 'china', roam: false, label: { normal: { show: true }, emphasis: { show: true } }, itemStyle: { normal: { borderWidth: 0.5, borderColor: '#009fe8', areaColor: '#fff' }, emphasis: { areaColor: '#009fe8' } }, data: [ { name: '北京', value: 50 }, { name: '上海', value: 100 }, { name: '广州', value: 150 } ] } ] } } } } </script> ``` 以上代码实现了一个简单的迁徙,其 `fromName` 和 `toName` 表示迁徙的起点和终点,`coords` 表示起点和终点的经纬度。`flowIn` 和 `flowOut` 表示流入和流出的数据,可以根据实际需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值