vue中添加Echarts圖表的使用,Echarts的學習筆記


項目中需要使用一些折線圖、柱狀圖、餅狀圖等等,之前使用過heightCharts(關於heightCharts請看我的另一篇 http://www.cnblogs.com/jasonwang2y60/p/6224390.html ),覺得這貨不開源,只是做展示的話又點浪費時間,於是看了下eCharts,於是在vue-cli搭建的項目中添加了eCharts,下面是具體步驟和自己的一些學習筆記,參照於Echarts3官網

1.在vue-cli項目中添加webpack配置,本文引入的最新版本。在 3.1.1 版本之前 ECharts 在 npm 上的 package 是非官方維護的,從 3.1.1 開始由官方 EFE 維護 npm 上 ECharts 和 zrender 的 package。
 

使用npm添加package.json文件中的配置並下載相關npm包依賴

npm install echarts --save

然后在項目文件的入口js文件main.js中添加

import echarts from "echarts"

在需要添加圖標的組件中創建依賴的實例

var echarts = require('echarts');

使用這種方式得到的是已經加載了所有圖表和組件的 ECharts 包,因此體積會比較大。也可以只按需引入需要的模塊。例如

// 引入 ECharts 主模塊
var echarts = require('echarts/lib/echarts');
// 引入柱狀圖
require('echarts/lib/chart/bar');
// 引入提示框和標題組件
require('echarts/lib/component/tooltip');
require('echarts/lib/component/title');
各種資源的列表詳情請查閱官網的github倉庫   https://github.com/ecomfe/echarts/blob/master/index.js

在模板中創建所需的dom


<!-- ECharts圖表測試 -->
    <div id="charts" style="width:'100%',height:'3.54rem'">
        <div id="main"  :style="{width:'100%',height:'3.54rem'}"></div>
    </div>
寫入js:

export default {
  name: 'Bank',
  data () {
    return {
    }
  },
  components: {
  },
  computed: {
  },
  methods: {
  },
  mounted() {
    /*ECharts圖表*/
    var myChart = echarts.init(document.getElementById('main'));
    myChart.setOption({
        series : [
            {
                name: '訪問來源',
                type: 'pie',
                radius: '55%',
                itemStyle: {
                normal: {
                        // 陰影的大小
                        shadowBlur: 200,
                        // 陰影水平方向上的偏移
                        shadowOffsetX: 0,
                        // 陰影垂直方向上的偏移
                        shadowOffsetY: 0,
                        // 陰影顏色
                        shadowColor: 'rgba(0, 0, 0, 0.5)'
                    }
                },
                data:[
                    {value:400, name:'搜索引擎'},
                    {value:335, name:'直接訪問'},
                    {value:310, name:'郵件營銷'},
                    {value:274, name:'聯盟廣告'},
                    {value:235, name:'視頻廣告'}
                ]
            }
        ]
    })
  }
}
eCharts中的事件:
ECharts 支持常規的鼠標事件類型,包括 'click''dblclick''mousedown''mousemove''mouseup''mouseover''mouseout' 事件。
// 基於准備好的dom,初始化ECharts實例 var myChart = echarts.init(document.getElementById('main')); // 指定圖表的配置項和數據

var option = {
    xAxis: {
        data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
    },
    yAxis: {},
    series: [{
        name: '銷量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
    }]
};
// 使用剛指定的配置項和數據顯示圖表。 myChart.setOption(option); // 處理點擊事件並且跳轉到相應的百度搜索頁面 myChart.on('click', function (params) { window.open('https://www.baidu.com/s?wd=' + encodeURIComponent(params.name)); });
所有的鼠標事件包含參數 params,這是一個包含點擊圖形的數據信息的對象,如下格式:

{
    // 當前點擊的圖形元素所屬的組件名稱,
    // 其值如 'series'、'markLine'、'markPoint'、'timeLine' 等。
    componentType: string,
    // 系列類型。值可能為:'line'、'bar'、'pie' 等。當 componentType 為 'series' 時有意義。
    seriesType: string,
    // 系列在傳入的 option.series 中的 index。當 componentType 為 'series' 時有意義。
    seriesIndex: number,
    // 系列名稱。當 componentType 為 'series' 時有意義。
    seriesName: string,
    // 數據名,類目名
    name: string,
    // 數據在傳入的 data 數組中的 index
    dataIndex: number,
    // 傳入的原始數據項
    data: Object,
    // sankey、graph 等圖表同時含有 nodeData 和 edgeData 兩種 data,
    // dataType 的值會是 'node' 或者 'edge',表示當前點擊在 node 還是 edge 上。
    // 其他大部分圖表中只有一種 data,dataType 無意義。
    dataType: string,
    // 傳入的數據值
    value: number|Array
    // 數據圖形的顏色。當 componentType 為 'series' 時有意義。
    color: string
}
如何區分鼠標點擊到了哪里:

myChart.on('click', function (params) {
    if (params.componentType === 'markPoint') {
        // 點擊到了 markPoint 上
        if (params.seriesIndex === 5) {
            // 點擊到了 index 為 5 的 series 的 markPoint 上。
        }
    }
    else if (params.componentType === 'series') {
        if (params.seriesType === 'graph') {
            if (params.dataType === 'edge') {
                // 點擊到了 graph 的 edge(邊)上。
            }
            else {
                // 點擊到了 graph 的 node(節點)上。
            }
        }
    }

});

你可以在回調函數中獲得這個對象中的數據名、系列名稱后在自己的數據倉庫中索引得到其它的信息候更新圖表,顯示浮層等等,如下示例代碼:

myChart.on('click', function (parmas) {
    $.get('detail?q=' + params.name, function (detail) {
        myChart.setOption({
            series: [{
                name: 'pie',
                // 通過餅圖表現單個柱子中的數據分布
                data: [detail.data]
            }]
        });
    });
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM