react+echarts實現全國客戶數據展示

前言

數據可視化一直都是一個流行的話題。我們平時做項目可能就避免不了與圖圖表表打交道。所幸的是現在有許多優秀成熟的數據圖表庫,例如EchartsHighcharts,我們可以在裏面尋找自己需要的圖表,方便快捷~

需求

假設我們有這樣一個需求:把統計到的全國客戶數據,利用可視化的方案展示出來。
針對這樣一個需求,一個比較好的方案就是把客戶數據展示在地圖上,這樣可以清晰直觀的瞭解到客戶在全國各地的分佈。本文的話就主要利用react+echarts來實現。

實操

當然,要想在react中使用echarts,就要先install一下

npm i echarts

echarts準備好了,現在就要找到我們的地圖文件,怎麼這麼說,因爲現在echarts官網不提供china.js的下載。怎麼辦?當然是面向搜索引擎編程,網上一搜就有。只要我們熟悉了echarts的配置項和API,實現想要的圖表還是比較快的。

接下來引入我們的文件並初始化我們的頁面:

import React, { Component } from 'react';
import '../china';
import echarts from 'echarts'
import './app.less';

export class App extends Component {
    constructor(props) {
        super(props);
        this.state = {
            data:[
               
            ]
        }
    }

    componentDidMount(){
        this.initMap();
    }
    
    //初始化地圖

    initMap = () => {
        let myChart = echarts.init(document.getElementById('myMap'));
        let option = {
            tooltip: {
                formatter: function (e , t, n) {
                    return e.seriesName + "<br />" + e.name + ":" + e.value
                }
            },
            visualMap: {
                min: 0,
                max: 1000,
                right: 26,
                bottom: 40,
                showLabel: !0,
                pieces: [{
                    gt: 500,
                    label: "500家以上",
                    color: "#ED5351"
                }, {
                    gte: 200,
                    lte: 500,
                    label: "201-500家",
                    color: "#3B5A97"
                }, {
                    gte: 100,
                    lt: 200,
                    label: "101-200家",
                    color: "#59D9A5"
                }, {
                    gt: 51,
                    lte: 100,
                    label: "51-100家",
                    color: "#F6C021"
                }, {
                    label: "1-50家",
                    gt: 0,
                    lte: 50,
                    color: "#6DCAEC"
                }
                ],
                show: !0
            },
            geo: {
                map: "china",
                roam: !1,
                scaleLimit: {
                    min: 1,
                    max: 2
                },
                zoom: 1.13,
                layoutCenter: ['30%', '30%'],                //地圖中心在屏幕中的位置
                label: {
                    normal: {
                        show: !0,
                        fontSize: "14",
                        color: "rgba(0,0,0,0.7)"
                    }
                },
                itemStyle: {
                    normal: {
                        borderColor: "rgba(0, 0, 0, 0.2)"
                    },
                    emphasis: {
                        areaColor: "#F5DEB3",
                        shadowOffsetX: 0,
                        shadowOffsetY: 0,
                        borderWidth: 0
                    }
                }
            },
            series: [{
                name: "客戶統計",
                type: "map",
                geoIndex: 0,
                data: this.state.data,
                areaColor: '#0FB8F0'
            }]
        };
        myChart.setOption(option);
        window.addEventListener("resize", function () {
            myChart.resize();
        });
    }
    render(){
        return (
            <div className="map">
                <div id="myMap"></div>
            </div>
        )
    }
}

讓我們看看初步效果:
在這裏插入圖片描述
我們的全國地圖就出現了,然後我們再加上數據看看(數據純屬虛構)。

...

this.state = {
            data:[
                {
                    name: "南海諸島",
                    value: 0
                },
                {
                    name: '北京',
                    value: 20
                },
                {
                    name: '天津',
                    value: 30
                },
                {
                    name: '上海',
                    value: 229
                },
                {
                    name: '重慶',
                    value: 59
                },
                {
                    name: '河北',
                    value: 190
                },
                {
                    name: '河南',
                    value: 300
                },
                {
                    name: '雲南',
                    value: 20
                },
                {
                    name: '遼寧',
                    value: 40
                },
                {
                    name: '黑龍江',
                    value: 37
                },
                {
                    name: '湖南',
                    value: 180
                },
                {
                    name: '安徽',
                    value: 0
                },
                {
                    name: '山東',
                    value: 67
                },
                {
                    name: '新疆',
                    value: 10
                },
                {
                    name: '江蘇',
                    value: 0
                },
                {
                    name: '浙江',
                    value: 0
                },
                {
                    name: '江西',
                    value: 0
                },
                {
                    name: '湖北',
                    value: 0
                },
                {
                    name: '廣西',
                    value: 0
                },
                {
                    name: '甘肅',
                    value: 0
                },
                {
                    name: '山西',
                    value: 0
                },
                {
                    name: '內蒙古',
                    value: 89
                },
                {
                    name: '陝西',
                    value: 0
                },
                {
                    name: '吉林',
                    value: 0
                },
                {
                    name: '福建',
                    value: 66
                },
                {
                    name: '貴州',
                    value: 0
                },
                {
                    name: '廣東',
                    value: 330
                },
                {
                    name: '青海',
                    value: 0
                },
                {
                    name: '西藏',
                    value: 74
                },
                {
                    name: '四川',
                    value: 601
                },
                {
                    name: '寧夏',
                    value: 0
                },
                {
                    name: '海南',
                    value: 45
                },
                {
                    name: '臺灣',
                    value: 23
                },
                {
                    name: '香港',
                    value: 0
                },
                {
                    name: '澳門',
                    value: 0
                }
            ]
        }
        
...

上面的數據是手動添加的,一般在實際開發的時候,數據都是從後臺獲取的。
在這裏插入圖片描述
看看最終效果,還是不錯吧,圖中的各種效果基本上都能通過相關配置實現。

最後

其實我們在利用echarts做數據可視化相關項目的時候,主要是要搞懂其中大量的配置項。對於不同類型的圖表,我們也沒有必要去一行一行的配,echarts官網除了官方實例外,社區裏還有大佬們發的實例,可能找一找,就能找到我們想要或者類似的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章