vue使用ECharts实现折线图和饼图

在开发后台管理项目时,需要统计后台用户数据,以折线图和饼图的形式显示,这边采用apache-echarts来实现需求。

1.安装echarts和引入

npm install echarts --save

import * as echarts from 'echarts';

2.使用echarts实现pie图

<template>
    <div id="chartPie" class="pie-wrap"></div>
</template>

<script>
    import * as echarts from 'echarts';
    require('echarts/theme/macarons');//引入主题

    export default {
    data() {
      return {
        chartPie: null
      }
    },
    mounted() {
      this.$nextTick(() => {
        this.drawPieChart();
      })
    },
    methods: {
      drawPieChart() {
        let mytextStyle = {
          color: "#333",
          fontSize: 18,
        };
        let mylabel = {
          show: true,
          position: "right",
          offset: [30, 40],
          formatter: '{b} : {c} ({d}%)',
          textStyle: mytextStyle
        };
        this.chartPie = echarts.init(document.getElementById('chartPie'),'macarons');
        this.chartPie.setOption({
          title: {
            text: 'Pie Chart',
            subtext: '纯属虚构',
            x: 'center'
          },
          tooltip: {
            trigger: 'item',
            formatter: "{a} <br/>{b} : {c} ({d}%)",
          },
          legend: {
            data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'],
            left:"center",
            top:"bottom",
            orient:"horizontal",
          },
          series: [
            {
              name: '访问来源',
              type: 'pie',
              radius: ['50%', '70%'],
              center: ['50%', '50%'],
              data: [
                {value: 335, name: '直接访问'},
                {value: 310, name: '邮件营销'},
                {value: 234, name: '联盟广告'},
                {value: 135, name: '视频广告'},
                {value: 1548, name: '搜索引擎'}
              ],
              animationEasing: 'cubicInOut',
              animationDuration: 2600,
              label: {
                emphasis: mylabel
              }
            }
          ]
        });
      }
    }
  }
</script>

<style lang='less' scope>
    .pie-wrap{
        width:100%;
        height:400px;
    }
</style>

3.使用echarts实现line图

<template>
    <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
    <div id="chartLine" class="line-wrap"></div>
</template>

<script>
    import * as echarts from 'echarts';
    require('echarts/theme/shine');//引入主题

    export default {
    data() {
      return {
        chartLine: null
      }
    },
    mounted() {
      this.$nextTick(() => {
        this.drawLineChart();
      })
    },
    methods: {
      drawLineChart() {
        this.chartLine = echarts.init(this.$el,'shine');// 基于准备好的dom,初始化echarts实例
        let option = {
            tooltip : {
                trigger: 'axis'
            },
            legend: {
                data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎']
            },
            calculable : true,
            xAxis : [
                {
                    type : 'category',
                    boundaryGap : false,
                    axisTick: {
                        show: false
                    },
                    data : ['周一','周二','周三','周四','周五','周六','周日']
                }
            ],
            yAxis : [
                {
                    type : 'value',
                    axisTick: {
                        show: false
                    },
                    name: '(人)'
                }
            ],
            series : [
                {
                    name:'邮件营销',
                    type:'line',
                    stack: '总量',
                    data:[120, 132, 101, 134, 90, 230, 210]
                },
                {
                    name:'联盟广告',
                    type:'line',
                    stack: '总量',
                    data:[220, 182, 191, 234, 290, 330, 310]
                },
                {
                    name:'视频广告',
                    type:'line',
                    stack: '总量',
                    data:[150, 232, 201, 154, 190, 330, 410]
                },
                {
                    name:'直接访问',
                    type:'line',
                    stack: '总量',
                    data:[320, 332, 301, 334, 390, 330, 320]
                },
                {
                    name:'搜索引擎',
                    type:'line',
                    stack: '总量',
                    data:[820, 932, 901, 934, 1290, 1330, 1320]
                }
            ]
        };
        // 使用刚指定的配置项和数据显示图表
        this.chartLine.setOption(option);
      }
    }
  }
</script>

<style lang='less' scope>
    .line-wrap{
        width:50%;
        height:400px;
    }
</style>

4.echarts基础概念

1)echarts实例

一个网页中可以创建多个 echarts 实例,每个 echarts 实例 中可以创建多个图表和坐标系等等(用 option 来描述)。准备一个 DOM 节点(作为 echarts 的渲染容器),就可以在上面创建一个 echarts 实例。

2)系列(series)

一组数值以及他们映射成的图,一个 系列 包含的要素至少有:一组数值、图表类型(series.type)、以及其他的关于这些数据如何映射成图的参数。
echarts 里系列类型(series.type)就是图表类型。系列类型(series.type)至少有:line(折线图)、bar(柱状图)、pie(饼图)

3)组件(component)

echarts 中至少有这些组件:xAxis(直角坐标系 X 轴)、yAxis(直角坐标系 Y 轴)、grid(直角坐标系底板)、dataZoom(数据区缩放组件)、visualMap(视觉映射组件)、tooltip(提示框组件)、toolbox(工具栏组件)、series(系列)、...

5.echarts常用配置项和API

1)title标题组件,包含主标题和副标题

title: {
    text: 'Pie Chart',//主标题文本
    subtext: '纯属虚构',//副标题文本
    x: 'center',
    textStyle:{//主标题样式
      color: "#333",
      fontSize: 18
    },
    subtextStyle:{},//副标题样式
    itemGap: 10,//主副标题之间的间距
  }

2)legend图例组件

legend: {
    left:"center",//图例组件离容器左侧的距离
    top:"bottom",//图例组件离容器上侧的距离
    orient:"horizontal",//图例列表的布局朝向
    itemGap :20,//图例每项之间的间隔
    formatter: function (name) {//用来格式化图例文本,支持字符串模板和回调函数两种形式~~~~
        return 'Legend ' + name;
    },
    icon:'circle',//图例项的 icon
    data: [
        {
            icon: 'triangle',
            textStyle: {
              color: 'red'
            },
            name: '直接访问'
        },
        '邮件营销', '联盟广告', '视频广告', '搜索引擎'],//图例的数据数组
  }

3)xAxis直角坐标系 grid 中的 x 轴

xAxis : [
        {
            type : 'category',//坐标轴类型
            boundaryGap : false,
            axisTick: {//坐标轴刻度相关设置
                show: false
            },
            data : ['周一','周二','周三','周四','周五','周六','周日']//类目数据
        }
    ]

4)yAxis直角坐标系 grid 中的 y 轴

yAxis : [
        {
            type : 'value',//坐标轴类型,`'value'` 数值轴,适用于连续数据
            axisTick: {
                show: false
            },
            name: '(人)'
        }
    ]

5)tooltip提示框组件

tooltip : {
    trigger: 'axis',//触发类型,'axis'坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
    formatter: "{a} <br/>{b} : {c} ({d}%)",//模板变量有 `{a}`, `{b}`,`{c}`,`{d}`,`{e}`,分别表示系列名,数据名,数据值等
}

6)series系列列表,每个系列通过 type 决定自己的图表类型

A.series-line

series : [
    {
        name:'邮件营销',
        type:'line',
        stack: '总量',
        data:[120, 132, 101, 134, 90, 230, 210],//系列中的数据内容数组
        areaStyle:{//区域填充样式
            color:'red'
        },
        lineStyle:{//线条样式
            color:'#000'
        },
        emphasis:{//图形的高亮样式
            label:{
                color:'red'
            }
        }
    }
]

B.series-pie
series : [
    {
      name: '访问来源',
      type: 'pie',
      radius: ['50%', '70%'],//饼图的半径,数组的第一项是内半径,第二项是外半径
      center: ['50%', '50%'],//饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标。支持设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
      roseType: false,//是否展示成南丁格尔图,通过半径区分数据大小
      data: [//系列中的数据内容数组
        {value: 335, name: '直接访问'},
        {value: 310, name: '邮件营销'},
        {value: 234, name: '联盟广告'},
        {value: 135, name: '视频广告'},
        {value: 1548, name: '搜索引擎'}
      ],
      animationEasing: 'cubicInOut',//初始动画的缓动效果
      animationDuration: 2600,//初始动画的时长
      label: {
        emphasis: mylabel//高亮的扇区和标签样式
      }
    }

]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • vue实现折线图 可按时间查询

    本文实例为大家分享了vue实现可按时间查询的折线图的具体代码,供大家参考,具体内容如下 1.vue前端 //查询条件 <template> <el-date-picker v-model="listQuery.toptime" :picker-options="pickerOptions" style="width: 380px" type="daterange" clearable range-separa

  • vue+echarts实现动态折线图的方法与注意

    之前公司有个绘制实时盈利率折线图的需求,实现的还不错,今天来分享下vue+echarts实现动态折线图的方法. 实现代码 <template> <div id="myChart"></div> </template> <script> import echarts from 'echarts' export default { name: 'DynamicLineChart', data () { return { // 实时

  • vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)

    本篇文档主要是利用echarts实现可拖动节点的折线图,在echarts中找到了一个demo,传送门:https://echarts.baidu.com/examples/editor.html?c=line-draggable,但是不是用vue写的,并且在改写为vue组件的过程中遇到了很多问题,在百度过程中发现并没有相关的文档,所以决定自己开发,并在demo的基础上开发了一些实用的功能,所以把这个过程记录下来.文档中还有很多不够完善的地方,欢迎讨论哈! 需求:制作一个折线图用于显示当前24小时

  • vue实现echart饼图legend显示百分比的方法

    本文主要介绍了vue使用echart的饼图数据部分展示百分比,分享给大家,具体如下: 效果图 实现源码 option = { title : { text: '某站点用户访问来源', subtext: '纯属虚构', x:'center' }, tooltip : { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, legend: { orient: 'vertical', // 布局方式,默认为水平布局

  • 在vue项目中引用Antv G2,以饼图为例讲解

    我就废话不多说了,大家还是直接看代码吧~ npm install @antv/g2 --save template内容: <template> <div id="pieChart"></div> </template> js部分: ​//引入G2组件 import G2 from "@antv/g2"; ​ export default { name:"", //数据部分 data(){ retur

  • 在Vue中使用highCharts绘制3d饼图的方法

    highcharts是国外知名基于javascript的图表库.由于中文官网的vue中使用highcharts配置繁琐并且需要引入jquery作为依赖,所以弃用. 接下来,给各位伙伴简要的讲叙下highcharts在vue中的使用和配置方法. 首先使用 npm在你的项目中安装vue-highcharts npm install vue-highcharts --save 由于vue-highcharts依赖于highcharts,我们还需要安装后者 npm install highcharts

  • 基于mpvue小程序使用echarts画折线图的方法示例

    第一次使用mpvue框架来写小程序,项目开发直接搬用mpvue-shop(一个仿网易严选的小程序开发项目),项目结构清楚,实现了大部分功能,对于初次使用mpvue的小伙伴们来说,是一个很好的选择. 关于组件的选择: 1.echarts-for-weixin,官方echarts的小程序版本.使用参考:echarts-for-weixin介绍,如果你是原生开发小程序版本,这个组件非常适合你,开发过程中可使用echarts官方提供的所有配置和Api,但并不适合mpvue项目. 2.wx-charts,

  • 在vue中使用echarts(折线图的demo,markline用法)

    公司最近在用vue开发项目,项目接近尾声了,趁休息时间写点demo-- vue引入echarts(折线图的demo) 主要是解决引入echarts,markline的使用(基准线) 这是demo的效果图: vue脚手架不多赘述 1.安装依赖 cnpm install echarts -S 2.在main.js中引入echarts import echarts from 'echarts' 3.在main.js中安装 Vue.prototype.echarts = echarts; 一般来说能正常

  • vue使用ECharts实现折线图和饼图

    在开发后台管理项目时,需要统计后台用户数据,以折线图和饼图的形式显示,这边采用apache-echarts来实现需求. 1.安装echarts和引入 npm install echarts --save import * as echarts from 'echarts'; 2.使用echarts实现pie图 <template> <div id="chartPie" class="pie-wrap"></div> </te

  • vue使用echarts实现折线图

    本文实例为大家分享了vue使用echarts实现折线图的具体代码,供大家参考,具体内容如下 效果图: 代码: <template>             <div class="proCharts" ref='charts'>             </div> </template> <script> import echarts from 'echarts'   //npm install echarts@4.9.0

  • vue+echart实现圆滑折线图

    本文实例为大家分享了vue+echart实现圆滑折线图的具体代码,供大家参考,具体内容如下 效果图: 安装依赖: npm install echarts --save     import echarts from "echarts"; 完整代码: <template>   <div>     <div id="demo"></div>   </div> </template> <scri

  • Vue导入Echarts实现折线散点图

    本文实例为大家分享了Vue导入Echarts实现折线散点图的具体代码,供大家参考,具体内容如下 效果图: 一.vue-cli中导入echarts 通过命令:npm install echarts --save进行下载到项目中,然后在项目中的main.js中进行导入且保存在vue的原型上. main.js代码如下: import Vue from 'vue' import App from './App.vue' const echarts = require("echarts") Vu

  • ASP生成柱型体,折线图,饼图源代码提供了第1/3页

    ASP生成柱型体,折线图,饼图源代码 <% function table2(total,table_x,table_y,all_width,all_height,line_no) '参数含义(传递的数组,横坐标,纵坐标,图表的宽度,图表的高度,折线条数) '纯ASP代码生成图表函数2--折线图 '作者:龚鸣(Passwordgm) QQ:25968152 MSN:passwordgm@sina.com Email:passwordgm@sina.com '本人非常愿意和ASP,VML,FLASH

  • ASP生成柱型体,折线图,饼图源代码

    ASP生成柱型体,折线图,饼图源代码 -------------------------------------------------------------------------------- <% function table2(total,table_x,table_y,all_width,all_height,line_no) '参数含义(传递的数组,横坐标,纵坐标,图表的宽度,图表的高度,折线条数) '纯ASP代码生成图表函数2--折线图 '作者:龚鸣(Passwordgm) QQ

  • jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法

    本文实例讲述了jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法.分享给大家供大家参考,具体如下: 1.问题背景 设计一条折线图,但是图形中不用插件自带的颜色,需要自定义线条和折点的颜色 2.实现源码 (1)图形自分配颜色 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>echarts-设置折线图中折线线条颜色和折线点颜色</t

  • jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts绘制2D柱状图.折线图和饼图的组合图效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D柱状图.折线图和饼图的组合图</title> <script type="text/javascript"

  • 使用laravel和ECharts实现折线图效果的例子

    1.首先引入echart.js <script type="text/javascript" src="{{ asset('/public/js/echarts.js') }}"></script> 2.html页面,要有一个布局容器,用来显示图像,一定要设置宽和高 <div class="contain" style="width: 84%;" id="contain">

  • echarts实现折线图的拖拽效果

    使用echarts实现折线图的拖拽,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="./echarts.js"></script> </head> <body> <div id="main" style="width: 600p

随机推荐