如何利用echarts图表获取点击图形类型点击类型

栏目:资讯发布:2023-10-04浏览:3收藏

如何利用echarts图表获取点击图形类型点击类型,第1张

第一步,新建静态页面barhtml,修改title并引入echarts js文件,如下图所示:

第二步,添加条状图容器,在<body></body>插入一个div,并给出id属性和宽度高度,如下图所示:

第三步,编写生成条状图的js代码,添加数据和样式,如下图所示:

第四步,预览该图形界面,可以看到效果图,如下图所示:

第五步,编写点击条状图的柱子,然后获取它们的name和value,如下图所示:

第六步,再次预览该界面,打开浏览器的控制台,查看打印结果,如下图所示:

ECharts可以很方便的在网页上绘制地图,图表,并且可以提供下载图像,放大,缩小,拖动等功能,今天主要说一下它的地图类型(type:'map')是如何实现的.

首先在ECharts地图的坐标需要我们存储在一个geoCoord属性里,它是一个JS的字典对象,由键/值对组成,键表示点的名称,值则表达它的坐标,由经纬度组成,它是一个数组,如[13600,3200]它就表示了一个坐标.

地图类型的图表需要关注的元素

title:标题,显示这个地图所表示的名称

  title: {

text: '清大云点亮中国',

subtext: 'TsingdaCloud',

sublink: 'http://wwweee114com',

x: 'center',

y: 'top',

textStyle: {

color: '#fff'

}

}

toolbox:工具栏,显示一些显示的工具,放大,缩小,查看数据集,下载图像等

    toolbox: {

show: true,

feature: {

mark: { show: true },

dataView: { show: true, readOnly: false },

restore: { show: true },

saveAsImage: { show: true }

}

}

legend:图标显示,当series有多个地图时,这个值用到显示多个地图的图标,可以是横向显示和纵向显示

    legend: {

x: 'left',

y: 'top',

data: ['在线', '离线'],//在线和离线对应的是series的名字

selectedMode: false,//选中悬浮

textStyle: {

color: '#fff'

}

}

series:地图显示,用来叠放显示地图,你可以定义多个,它们之间的关系是第一个在最上面,以此类推.

series: [

//默认

{

name: '底层模版',

type: 'map',

mapType: 'china',

data: provinceMap,

geoCoord: source,

itemStyle: {

normal: {

color: bgColor,

borderColor: "#eee",

label: {

show: true,

textStyle: {

color: "#fff"

}

}

}, emphasis: { color: "rgba(128, 128, 128, 05)" }

},

}]

markPoint:点标识,用来标识地图上的后,这些点通常是被存储在一个geoCoord对象上,这个对象是一个字典,这在文章开头已经介绍过.

markPoint: {//动态标记

large: true,//这个选项,悬浮自动失效

symbolSize: 2,

itemStyle: {

normal: {

shadowBlur: 2,

shadowColor: 'rgba(37, 140, 249, 08)',

color: onColor

}

},

data: []

}

markPoint里的data对象是这个地图上需要显示的点,它是一个字符型数组,用来存储geoCoord里的键!

setOption:将地图对象添加到指定的地图对象上

var myChart = echartsinit(documentgetElementById('main'));

var option={};

myChartsetOption(option);

动态构建地图上的点标识markPoint

大概的思路是将要标记的点动态付给geoCoord和markPoint的data对象上,这样就可以动态在地图上标示点了

    $get("/map/GetOffMap", function (data) {

for (var i in data) {

optionseries[0]geoCoord[data[i]longitude + "_" + data[i]latitude] = [parseFloat(data[i]longitude), parseFloat(data[i]latitude)];

optionseries[1]markPointdatapush({ name: data[i]longitude + "_" + data[i]latitude });

}

myChartsetOption(option);

echarts是做数据统计。

1、 Echarts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11),Chrome,Firefox,Safari等。

2、底层依赖轻量级Canva+库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。

3、ECharts 3 中更是加入了更多丰富的交互功能以及更多的可视化效果,并且对移动端做了深度的优化。

扩展资料

echarts的优点:

1、国人开发,文档全,便于开发和阅读文档。

2、图表丰富,可以适用各种各样的功能。

echarts的缺点:

1、移动端使用略卡,毕竟是PC端的东西,移植到移动端肯定多多少少有些问题吧,或许跟自己水平也有一定的关系。

2、echarts不失为一款比较适合我们这种码农使用的框架。

3、echarts就不贴代码了。毕竟文档很全。

参考资料:

ECharts官网-eCharts

1、主标题与副标题无法放置不同的位置

          根据官方文档设置titlealign为left或者titlesubtextStylealign为left均无效

          方法一:加一个div使用绝对定位存放副标题

          方法二:使用伪元素绝对定位存放副标题

2、饼图的series列表下的label即在外部显示又在内部显示

        方法一:设置两个div存放两个数据一样的饼图,第一个div渲染饼图的series[0]label设置为"{formatter: '{d}%'}",第二个div渲染饼图的series[0]label设置为"{formatter: '{c}个', position: 'inner', color: 'white'}",注意第二个div覆盖显示在第一div的上面。

        方法二:div渲染饼图的series[0]label设置为"{formatter: '{d}%'}", series[1]label设置为"{formatter: '{c}个', position: 'inner', color: 'white'}",同时series[0]的其它数据和series[1]的其它数据一致,series[0]label的内容可以和series[0]互换。

3、series存在多个,默认情况下legend的样式按series[0]为准

        series[0]没有设置样式,series[1]itemStylenormal自定义样式,最终效果如上图

4、y轴文字左对齐

       柱体设置弧度可以通过设置series[0]itemStylenormalbarBorderRadius为[0, 5, 5, 0],数字代表弧度,数组顺序代表柱体顺时针左上,右上,右下,左下

        文字左对齐可以设置yAxisaxisLabeltextStylealign为left,此时的y轴的文字将出现在柱体里

         yAxisaxisLabeltextStylemargin可以用来设置yAxis和grid的间隔

        可以看到柱状图没有填满整个div,可以设置gridleft的值为负值来填满div

// 指定图表的配置项和数据varoption = {

    backgroundColor: 'rgba(204,204,204,07 )',

    // 背景色,默认无背景    rgba(51,255,255,07)    title: {

        text: '各教育阶段男女人数统计',

        link: 'https://wwwxxxcom',

        target: 'blank',

        top: '5%',

        left: '3%',

        textStyle: {

            color: '#fff',

            fontSize: 20,

        }

    },

    legend: { // 图例组件show:true,

        icon: 'rect',

        // 图例项的 icon。ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'也可以通过 'image://url' 设置为,其中 url 为的链接,或者 dataURI。可以通过 'path://' 将图标设置为任意的矢量路径。 top: '40%',

        // 图例距离顶部边距left: '15%',

        // 图例距离左侧边距itemWidth: 10,

        // 图例标记的图形宽度。[ default: 25 ]itemHeight: 10,

        // 图例标记的图形高度。[ default: 14 ]itemGap: 30,

        // 图例每项之间的间隔。[ default: 10 ]横向布局时为水平间隔,纵向布局时为纵向间隔。orient: 'vertical',

        // 图例列表的布局朝向,'horizontal'为横向,''为纵向textStyle: {// 图例的公用文本样式。fontSize: 15,

            color: '#fff'        },

        data: [{ // 图例的数据数组。数组项通常为一个字符串,每一项代表一个系列的 name(如果是饼图,也可以是饼图单个数据的 name)。图例组件会自动根据对应系列的图形标记(symbol)来绘制自己的颜色和标记,特殊字符串 ''(空字符串)或者 '\n'(换行字符串)用于图例的换行。name: '男',

            // 图例项的名称,应等于某系列的name值(如果是饼图,也可以是饼图单个数据的 name)。 icon: 'rect',

            // 图例项的 icon。textStyle: {// 图例项的文本样式。color: 'rgba(51,0,255,1)',

                fontWeight: 'bold'// 文字字体的粗细,可选'normal','bold','bolder','lighter'            }

        },

        {

            icon: 'rect',

            textStyle: {

                color: 'rgba(255,0,0,1)',

                fontWeight: 'bold'// 文字字体的粗细,可选'normal','bold','bolder','lighter'            }

        }],

    },

    radar: [{ // 雷达图坐标系组件,只适用于雷达图。center: ['50%', '50%'],

        // 圆中心坐标,数组的第一项是横坐标,第二项是纵坐标。[ default: ['50%', '50%'] ]radius: 160,

        // 圆的半径,数组的第一项是内半径,第二项是外半径。startAngle: 90,

        // 坐标系起始角度,也就是第一个指示器轴的角度。[ default: 90 ]name: {// (圆外的标签)雷达图每个指示器名称的配置项。formatter: '{value}',

            textStyle: {

                fontSize: 15,

                color: '#000'            }

        },

        nameGap: 15,

        // 指示器名称和指示器轴的距离。[ default: 15 ]splitNumber: 4,

        // (这里是圆的环数)指示器轴的分割段数。[ default: 5 ]shape: 'circle',

        // 雷达图绘制类型,支持 'polygon'(多边形) 和 'circle'(圆)。[ default: 'polygon' ]axisLine: {// (圆内的几条直线)坐标轴轴线相关设置            lineStyle: {

                color: '#fff',

                // 坐标轴线线的颜色。width: 1,

                // 坐标轴线线宽。type: 'solid',

                // 坐标轴线线的类型。            }

        },

        splitLine: { // (这里是指所有圆环)坐标轴在 grid 区域中的分隔线。            lineStyle: {

                color: '#fff',

                // 分隔线颜色width: 2,

                // 分隔线线宽            }

        },

        splitArea: { // 坐标轴在 grid 区域中的分隔区域,默认不显示。show:true,

            areaStyle: { // 分隔区域的样式设置。color: ['rgba(250,250,250,03)', 'rgba(200,200,200,03)'],

                // 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。            }

        },

        indicator: [{ // 雷达图的指示器,用来指定雷达图中的多个变量(维度),跟data中 value 对应name: '高中',

            // 指示器名称 max: 15000,

            // 指示器的最大值,可选,建议设置 //color: '#fff' // 标签特定的颜色。        },series: [{

        name: '雷达图',

        // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。type: 'radar',

        // 系列类型: 雷达图itemStyle: {// 折线拐点标志的样式。normal: {// 普通状态时的样式                lineStyle: {

                    width: 1                },

                opacity: 02            },

            emphasis: { // 高亮时的样式                lineStyle: {

                    width: 5                },

                opacity: 1            }

        },

        data: [{ // 雷达图的数据是多变量(维度)的name: '女',

            // 数据项名称value: [11035, 6013, 5067, 1520, 184],

            // 其中的value项数组是具体的数据,每个值跟 radarindicator 一一对应。symbol: 'circle',

            // 单个数据标记的图形。symbolSize: 5,

            // 单个数据标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10。label: {// 单个拐点文本的样式设置                normal: {

                    show: true,

                    // 单个拐点文本的样式设置。[ default: false ]position: 'top',

                    // 标签的位置。[ default: top ]distance: 5,

                    // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。[ default: 5 ]color: 'rgba(255,0,0,1)',

                    // 文字的颜色。如果设置为 'auto',则为视觉映射得到的颜色,如系列色。[ default: "#fff" ]fontSize: 14,

                    // 文字的字体大小formatter:function(params) {

                        return paramsvalue;

                    }

                }

            },

            itemStyle: { // 单个拐点标志的样式设置。                normal: {

                    borderColor: 'rgba(255,0,0,1)',

                    // 拐点的描边颜色。[ default: '#000' ]borderWidth: 3,

                    // 拐点的描边宽度,默认不描边。[ default: 0 ]                }

            },

            lineStyle: { // 单项线条样式。                normal: {

                    opacity: 05// 图形透明度                }

            },

            areaStyle: { // 单项区域填充样式                normal: {

                    color: 'rgba(255,0,0,06)'// 填充的颜色。[ default: "#000" ]                }

            }

        },

1安装echarts 

npm install echarts -S

2在mainjs中引用echarts

import echarts from 'echarts'

Vueprototype$echarts = echarts

3封装chart组件(复制粘贴就好了)

<!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->

<div id="bar" style="width: 600px;height:400px;"></div>

<div id="pie" style="width: 600px;height:400px;"></div>

<div id="line" style="width: 600px;height:400px;"></div>

在script里面写下面内容

export default{

    mounted(){

    thisdrawLine();//调用这个方法

},

    methods:{

        drawLine () {

        var echarts = require('echarts');

        var barChart = echartsinit(documentgetElementById('bar'));

        var pieChart = echartsinit(documentgetElementById('pie'));

        var lineChart = echartsinit(documentgetElementById('line'));

        barChartsetOption({

          title: {

              text: '柱状图'

          },

          tooltip: {},

          legend: {

              data: ['销量']

          },

          xAxis: {

              data: ["肉夹馍", "馒头", "豆沙包", "粉丝汤", "豆包", "油条"]

          },

          yAxis: {},

          series: [{

              name: '销量',

              type: 'bar',

              data: [5, 20, 36, 10, 10, 20]

          }]

        });

pieChartsetOption({

  title: {

      text: '饼图'

  },

  series: [{

      name: '访问来源',

      type: 'pie', // 设置图表类型为饼图

      radius: '55%', // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。

      data: [ // 数据数组,name 为数据项名称,value 为数据项值

          {

              value: 235,

              name: '视频广告'

          },

          {

              value: 274,

              name: '联盟广告'

          },

          {

              value: 310,

              name: '邮件营销'

          },

          {

              value: 335,

              name: '直接访问'

          },

          {

              value: 400,

              name: '搜索引擎'

          }

      ]

  }]

});

lineChartsetOption({

  title: {

      text: '折线图',

  },

  tooltip: {},

  legend: {

      data: ['销量', '试穿', '退货'],

      x: 'right'

  },

  xAxis: {

      data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]

  },

  yAxis: {},

  series: [{

      name: '销量',

      type: 'line',

      data: [5, 20, 36, 10, 10, 20]

  }, {

      name: '试穿',

      type: 'line',

      data: [30, 40, 50, 20, 12, 30]

  }, {

      name: '退货',

      type: 'line',

      data: [1, 2, 1, 3, 5, 2]

  }]

});

      }

    }

}

中红色框起来的按钮

2、代码

[javascript] view plain copy

selfButtons:{//自定义按钮 danielinbiti,这里增加,selfbuttons可以随便取名字

show:true,//是否显示

title:'自定义', //鼠标移动上去显示的文字

icon:'testpng', //图标

option:{},

onclick:function(option1) {//点击事件,这里的option1是chart的option信息

alert('1');//这里可以加入自己的处理代码,切换不同的图形

}

}

在toolbox中的位置

[javascript] view plain copy

toolbox: {

show : true,

feature : {

mark : {show: true},

dataView : {show: true, readOnly: false},

magicType : {show: true, type: ['line', 'bar']},

restore : {show: true},

selfButtons:{//自定义按钮 danielinbiti,这里增加,selfbuttons可以随便取名字

show:true,//是否显示

title:'自定义', //鼠标移动上去显示的文字

icon:'testpng', //图标

option:{},

onclick:function(option1) {//点击事件,这里的option1是chart的option信息

alert('1');//这里可以加入自己的处理代码,切换不同的图形

}

},

saveAsImage : {show: true}

}

}

当然,内置了很多图标,这些图标都是画出来的。

[javascript] view plain copy

iconLibrary: {

mark: _iconMark,

markUndo: _iconMarkUndo,

markClear: _iconMarkClear,

dataZoom: _iconDataZoom,

dataZoomReset: _iconDataZoomReset,

restore: _iconRestore,

lineChart: _iconLineChart,

barChart: _iconBarChart,

pieChart: _iconPieChart,

funnelChart: _iconFunnelChart,

forceChart: _iconForceChart,

chordChart: _iconChordChart,

stackChart: _iconStackChart,

tiledChart: _iconTiledChart,

dataView: _iconDataView,

saveAsImage: _iconSave,

cross: _iconCross,

circle: _iconCircle,

rectangle: _iconRectangle,

triangle: _iconTriangle,

diamond: _iconDiamond,

arrow: _iconArrow,

star: _iconStar,

heart: _iconHeart,

droplet: _iconDroplet,

pin: _iconPin,

image: _iconImage

}

带chart后缀的都放在magicType的type中,同时后缀chart不用,程序里会自动拼接,比如lineChart,写'line'

一、后台返回一个集合Map<String,List<Map<String,Object>>> ,每个map对应一个图。

二、jsp 页面

1、首先引入 jquery 和echarts 的 js文件

2、创建 展示环形图的div

    <div id="five"></div>

3、echarts加载,用ajax访问后台获取数据

总结:

一个页面要显示多个图表(不同的)时,添加多个div,然后给每个div加载echarts图表,配置option;

一个页面要显示多个图表(相同的)时,如上,把series设置为数组,然后一个一个的添加即可。

如何利用echarts图表获取点击图形类型点击类型

第一步,新建静态页面barhtml,修改title并引入echarts js文件,如下图所示:第二步,添加条状图容器,在<body></body>插入一个div,并给...
点击下载
热门文章
    确认删除?
    回到顶部