1. 程式人生 > >ECharts官方教程(九)【ECharts中的事件和行為】

ECharts官方教程(九)【ECharts中的事件和行為】

ECharts 中的事件和行為

在 ECharts 的圖表中使用者的操作將會觸發相應的事件。開發者可以監聽這些事件,然後通過回撥函式做相應的處理,比如跳轉到一個地址,或者彈出對話方塊,或者做資料下鑽等等。

在 ECharts 3 中繫結事件跟 2 一樣都是通過 on 方法,但是事件名稱比 2 更加簡單了。ECharts 3 中,事件名稱對應 DOM 事件名稱,均為小寫的字串,如下是一個繫結點選操作的示例。

myChart.on('click', function (params) {
    // 控制檯列印資料的名稱
    console.log(params.name);
});

在 ECharts 中事件分為兩種型別,一種是使用者滑鼠操作點選,或者 hover 圖表的圖形時觸發的事件,還有一種是使用者在使用可以互動的元件後觸發的行為事件,例如在切換圖例開關時觸發的 ‘legendselectchanged’ 事件(這裡需要注意切換圖例開關是不會觸發'legendselected'

事件的),資料區域縮放時觸發的 ‘datazoom’ 事件等等。

滑鼠事件的處理

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]
            }]
        });
    });
});

元件互動的行為事件

在 ECharts 中基本上所有的元件互動行為都會觸發相應的事件,常用的事件和事件對應引數在 events 文件中有列出。

下面是監聽一個圖例開關的示例:

// 圖例開關的行為只會觸發 legendselectchanged 事件
myChart.on('legendselectchanged', function (params) {
    // 獲取點選圖例的選中狀態
    var isSelected = params.selected[params.name];
    // 在控制檯中列印
    console.log((isSelected ? '選中了' : '取消選中了') + '圖例' + params.name);
    // 列印所有圖例的狀態
    console.log(params.selected);
});

程式碼觸發 ECharts 中元件的行為

上面提到諸如legendselectchanged事件會由元件互動的行為觸發,那除了使用者的互動操作,有時候也會有需要在程式裡呼叫方法觸發圖表的行為,諸如顯示 tooltip,選中圖例。

在 ECharts 2.x 是通過 myChart.component.tooltip.showTip 這種形式呼叫相應的介面觸發圖表行為,入口很深,而且涉及到內部元件的組織。相對地,在 ECharts 3 裡改為通過呼叫 myChart.dispatchAction({ type: '' }) 觸發圖表行為,統一管理了所有動作,也可以方便地根據需要去記錄使用者的行為路徑。

常用的動作和動作對應引數在 action 文件中有列出。

下面示例演示瞭如何通過dispatchAction去輪流高亮餅圖的每個扇形。

<iframe src="http://echarts.baidu.com/gallery/view.html?c=doc-example/pie-highlight&amp;edit=1&amp;reset=1" width="600" height="400"></iframe>

相關推薦

ECharts官方教程()ECharts事件行為

ECharts 中的事件和行為 在 ECharts 的圖表中使用者的操作將會觸發相應的事件。開發者可以監聽這些事件,然後通過回撥函式做相應的處理,比如跳轉到一個地址,或者彈出對話方塊,或者做資料下鑽等等。 在 ECharts 3 中繫結事件跟 2 一樣都是通

ECharts官方教程(五)非同步資料載入更新

非同步載入 入門示例中的資料是在初始化後setOption中直接填入的,但是很多時候可能資料需要非同步載入後再填入。ECharts 中實現非同步資料的更新非常簡單,在圖表初始化後不管任何時候只要通過 jQuery 等工具非同步獲取資料後通過 setOption

echarts 取消圖例上的點擊事件圖表上鼠標滑過點擊事件

tooltip 營銷 har div 視頻廣告 align 搜索 搜索引擎 bsp 備註:標黃的代碼是起作用的代碼,其他的不需要借鑒!!! //取消 鼠標滑過的提示框 tooltip : { trigger: ‘item‘, show:fals

python的編碼問題

網絡 文件操作 指定 enc 引號 pytho ascii碼 磁盤 encode 1、首先要在開頭說明編碼方式為:utf-8 例如:-*- coding: utf-8 -*- 2、如果遇到字符串,立刻轉化為unicode,不要使用str(),直接使用unicode() un

Eclipse使用Git之一把遠程倉庫的項目,clone到eclipse裏面

margin 提交 reference mark 們的 sha url地址 png fig 【Eclipse中使用Git之一】把遠程倉庫的項目,clone到eclipse裏面

linux常用軟體安裝整理整理。。。

0、軟體安裝容易出現的問題。 a、報錯 http://ppa.launchpad.net/***/**/ubuntu bionic Release 404 Not Found 原因:ppa:***/** 沒有18.04版本的源 解決方法:修改/etc/ap

linux命令整理彙總整理。。。

1、增 a、拷貝目錄 sudo cp -r 要拷貝的檔名 目標路徑 b、遞迴拷貝目錄: sudo cp -r 要拷貝的檔名 目標路徑 c、建立多級目錄 sudo mkdir -p /firstLevel/secondLevel/thirdLevel 2、刪 a、刪除目

js事件預設行為

事件物件的preventDefault方法,可以阻止本次事件所觸發的瀏覽器預設行為,例如a標籤的href跳轉,瀏覽器的F5重新整理等等 在點選事件裡新增e.preventDefault()即可 準備一個a標籤就行 <a id="link" href="http:/

Eclipse使用Git之一把遠端倉庫的專案,clone到eclipse裡面

最新版的Eclipse上已經集成了Git外掛。所以在Eclipse中可以很方便的使用Git的功能。 在使用Git功能之前,需要先進行下簡單的設定。 設定一:設定我們的使用者名稱和郵箱。 進入>&

Unity3D畫面渲染官方教程(一)對光照渲染的介紹

專業 得到 ros 復雜 怎樣 span 處理 行為 廣泛 本系列是對官方教程的翻譯加上自己的一些理解譯著的,官方網址:https://unity3d.com/cn/learn/tutorials/s/graphics 翻譯上盡量保證準確性,但不排除省略或者添加一些詞匯幫

vue-layer-mobile vue整合 layer外掛

原文地址:https://www.npmjs.com/package/vue-layer-mobile#vue-layer-mobile vue彈出層外掛,包含toast loading dialog等浮層控制元件demo地址:http://jianghai.wao021.c

Qt的定時器

Qt中定時器問題還是比較簡單的,分為2種: (1)QObject類中的定時器 (2)QTimer類中的 一、QObject類的定時器 QObject是所有Qt物件的基類,這裡面有一個基本的定時器。 什麼是定時器呢? 就是這

Linux檢視殺死程序-kill -9 無條件殺死

首先檢視程序: [[email protected] /]# ps -ef | grep tomcat root 1726 1 0 Apr10 ? 00:07:20 /usr/java/jdk1.6.0_22//bin/java

python接口自動化()--python字典json的區別(詳解)

() ima 單引號 遍歷 不能 提取 都是 也說 none 簡介   這篇文章的由來是由於上一篇發送post請求的接口時候,參數傳字典(dict)和json的緣故,因為python中,json和dict非常類似,都是key-value的形式,為啥還要這麽傳參,在群裏問了

(轉載)項目管理構建——Maven下載、安裝配置(一)

文檔 port 目標 軟件項目管理 strong mar temp mave work 原文鏈接: http://blog.csdn.net/jiuqiyuliang/article/details/41076215 在現實

Ajax技術之XMLHttpRequest(二)XMLHttpRequest常用方法屬性

tro 沒有 body htm 事件 thead 指定 response date 一、XMLHttpRequest中常用的方法: (1)open()方法:用於設置進行異步請求目標的URL、請求方法以及其他參數信息。 函數原型:open("method","URL",asy

javagoogle的zxing架包生成二維碼讀取二維碼可帶文字logo

oms cga dispose framework 增加 span 記錄 ora obj 承接RC4生成不重復字符串的需求之後,因為優惠碼要方便用戶使用的緣故,所以思來想去,覺得還是直接生成二維碼給用戶直接掃比較實用,也不用用戶專門記錄冗長的優惠碼編號。 =========

Spotlights思維+前綴優化

設定 tac 時間復雜度 vector for 人的 names net stream https://blog.csdn.net/mengxiang000000/article/details/53291883 原博客地址 http://codeforces.

實數二分/字首維護Best Cow Fences

Poj 2018 Best Cow Fences 實數二分+字首和維護 調了一晚上, 但發現沒什麼注意事項orz 無輸出只因eps定義成了int型QAQ哭唧唧 #include<cstdio> #include<iostream> using namespace st

python資料採集練習 根據指定av號下載bilibili視訊(三)用selenium操縱瀏覽器行為

selenium庫可以控制瀏覽器行為。我們用selenium庫可以抓取我們所需的網頁全部資訊。 注意:要選擇與你瀏覽器相相容版本的驅動配合使用 關於selenium詳細教程這裡不累述,本程式使用的是Chrome瀏覽器,並且中會用到如下幾個函式: from sel