9.11. ECharts event handling

发布时间 : 2025-10-25 13:35:37 UTC      

Page Views: 10 views

In ECharts, we can call back and forth the corresponding function by listening to the user’s behavior.

ECharts passed on method to monitor the user’s behavior, such as monitoring the user’s click behavior.

There are two types of events in ECharts:

User mouse clicks, such as’ click’, ‘dblclick’,’ mousedown’, ‘mousemove’,’ mouseup’, ‘mouseover’,’ mouseout’, ‘globalout’,’ contextmenu’ events.

There are also behavioral events triggered by the user after using components that can interact, such as the ‘legendselectchanged’ event triggered when the legend switch is switched, the’ datazoom’ event triggeredwhen the data area is scaled, and so on.

myChart.on('click', function (params) { // Print the name of the data on the console after the user clicks console.log(params); }); myChart.on('legendselectchanged', function (params) { console.log(params); }); chart.on('click', 'series.line', function (params) { console.log(params); }); chart.on('mouseover', {seriesIndex: 1, name: 'xx'}, function (params) { console.log(params); }); 

9.11.1. Mouse event

Mouse event types supported by ECharts, including ‘click’,’ dblclick’, ‘mousedown’,’ mousemove’, ‘mouseup’,’ mouseover’, ‘mouseout’,’ globalout’, ‘contextmenu’ event.

The following example pops up a dialog box when you click on a column chart:

Example

// Based on the prepared dom, initialize the ECharts instance var myChart = echarts.init(document.getElementById('main')); // Specify configuration items and data for the chart var option = { xAxis: { data: ["Shirts", "woolen sweaters", "chiffon shirts", "pants", "high heels", "socks"] }, yAxis: {}, series: [{ name: 'sales volume', type: 'bar', data: [5, 20, 36, 10, 10, 20] }] }; // Use the newly specified configuration items and data to display charts. myChart.setOption(option); // Handle click events and pop up data names myChart.on('click', function (params) { alert(params.name); }); 

All mouse events contain parameters params , this is an object that contains the data information of the click drawing in the following format:

{ // The component name to which the currently clicked graphic element belongs, // Its value is as follows: 'series'、'markLine'、'markPoint'、'timeLine' etc. componentType: string, // Series type. The value may be:'line'、'bar'、'pie' etc. It is meaningful when componentType is 'series'. seriesType: string, // The index of the series in the passed option. series. It is meaningful when componentType is 'series'. seriesIndex: number, // Series name. It is meaningful when componentType is 'series'. seriesName: string, // Data name, category name name: string, // The index of the data in the incoming data array dataIndex: number, // Incoming raw data items data: Object, // Sankey, graph, and other charts contain both nodeData and edgeData, // The value of dataType will be 'node' or 'edge', indicating whether the current click is on node or edge. // In most other charts, there is only one type of data, and dataType is meaningless. dataType: string, // Incoming data value value: number|Array // The color of the data graph. It is meaningful when componentType is 'series'. color: string } 

How to tell where the mouse clicked:

myChart.on('click', function (params) { if (params.componentType === 'markPoint') { // Click on the MarkPoint. if (params.seriesIndex === 5) { // Click on the MarkPoint of the series with index 5. } } else if (params.componentType === 'series') { if (params.seriesType === 'graph') { if (params.dataType === 'edge') { // Click on the edge of the graph. } else { // Click on the node in the graph. } } } }); 

Use query triggers callbacks only for the graphical elements of the specified component:

chart.on(eventName, query, handler); 

query can be string or Object .

If for string represents the component type. The format can be ‘mainType’’ or ‘mainType.subType’. For example:

chart.on('click', 'series', function () {...}); chart.on('click', 'series.line', function () {...}); chart.on('click', 'dataZoom', function () {...}); chart.on('click', 'xAxis.category', function () {...}); 

If for Object can contain one or more of the following properties, eachof which is optional

{ Index: number // assembly index Name: string // assembly name Id: string // assembly id dataIndex: number // data item index name: string // data item name dataType: string // data item type,As shown in the diagram 'node', 'edge' element: string // Customize the name of el in the series }    

For example:

chart.setOption({ // ... series: [{ name: 'uuu' // ... }] }); chart.on('mouseover', {seriesName: 'uuu'}, function () { // When the graphic elements in a series with the name 'uuu' are called 'mouseover', this method is called back. }); 

For example:

chart.setOption({ // ... series: [{ // ... }, { // ... data: [ {name: 'xx', value: 121}, {name: 'yy', value: 33} ] }] }); chart.on('mouseover', {seriesIndex: 1, name: 'xx'}, function () { // When the element with name 'xx' in the series index 1 is called 'mouseover', this method is called back. }); 

For example:

chart.setOption({ // ... series: [{ type: 'graph', nodes: [{name: 'a', value: 10}, {name: 'b', value: 20}], edges: [{source: 0, target: 1}] }] }); chart.on('click', {dataType: 'node'}, function () { // This method is called back when a node in the graph is clicked. }); chart.on('click', {dataType: 'edge'}, function () { // This method is called back when the edge of the graph is clicked. }); 

For example:

chart.setOption({ // ... series: { // ... type: 'custom', renderItem: function (params, api) { return { type: 'group', children: [{ type: 'circle', name: 'my_el', // ... }, { // ... }] } }, data: [[12, 33]] } }) chart.on('mouseup', {element: 'my_el'}, function () { // The name is 'my_el' , when the element of el is called 'mouseup', this method is called back. }); 

You can obtain the data name and series name of this object in the callback function, and then index in your own data warehouse to get other informationto update the chart, display floating layer, and so on, as shown in the following example code:

Example

myChart.on('click', function (parmas) { $.get('detail?q=' + params.name, function (detail) { myChart.setOption({ series: [{ name: 'pie', // Using pie charts to represent the distribution of data within a single column data: [detail.data] }] }); }); }); 

9.11.2. Behavioral events of component interaction

In ECharts, almost all component interactions trigger corresponding events, and commonly used events and event corresponding parameters are listed in the events is listed in the document.

The following is an example of listening to a legend switch:

Example

// The behavior of the legend switch only triggers the legendselectchanged event myChart.on('legendselectchanged', function (params) { // Obtain the selected status of clicking on the legend var isSelected = params.selected[params.name]; // Printing in the console console.log((isSelected ? 'Selected' : 'Deselected') + 'legend' + params.name); // Print the status of all legends console.log(params.selected); }); 

9.11.3. Code triggers the behavior of components in ECharts

We only show the user interaction above, but sometimes we also need to call the method in the program and trigger the behavior of the chart, such as displaying tooltip .

ECharts passed dispatchAction({ type: '' }) to trigger the chart behavior, uniformly manage all actions, and record the user’s behavior path as needed.

The above example is used in the broadcast pie chart tooltip :

Example

setInterval(function () { var dataLen = option.series[0].data.length; // Cancel previously highlighted graphics myChart.dispatchAction({ type: 'downplay', seriesIndex: 0, dataIndex: app.currentIndex }); app.currentIndex = (app.currentIndex + 1) % dataLen; // Highlight the current shape myChart.dispatchAction({ type: 'highlight', seriesIndex: 0, dataIndex: app.currentIndex }); // display tooltip myChart.dispatchAction({ type: 'showTip', seriesIndex: 0, dataIndex: app.currentIndex }); }, 1000); 
《地理信息系统原理、技术与方法》  97

最近几年来,地理信息系统无论是在理论上还是应用上都处在一个飞速发展的阶段。 GIS被应用于多个领域的建模和决策支持,如城市管理、区划、环境整治等等,地理信息成为信息时代重要的组成部分之一; “数字地球”概念的提出,更进一步推动了作为其技术支撑的GIS的发展。 与此同时,一些学者致力于相关的理论研究,如空间感知、空间数据误差、空间关系的形式化等等。 这恰好说明了地理信息系统作为应用技术和学科的两个方面,并且这两个方面构成了相互促进的发展过程。