[vue]vue接入AntV G2Plot

文章目录

安装

npm install @antv/g2plot --save

配置

在main.js中 引入

import g2 from '@antv/g2plot'
Vue.prototype.$G2 = g2

使用

图表地址:https://g2plot.antv.vision/zh/examples/line/multiple#style-callback

<template>
  <div id="container"></div>
</template>
<script>
  import { Line } from '@antv/g2plot'

  export default {
    data() {
      return {
        data: [
          {
            date: '2018/8/1',
            type: 'download',
            value: 4623,
          },
          {
            date: '2018/8/1',
            type: 'register',
            value: 2208,
          },
          {
            date: '2018/8/1',
            type: 'bill',
            value: 182,
          },
          {
            date: '2018/8/2',
            type: 'download',
            value: 6145,
          },
          {
            date: '2018/8/2',
            type: 'register',
            value: 2016,
          },
          {
            date: '2018/8/2',
            type: 'bill',
            value: 257,
          },
          {
            date: '2018/8/3',
            type: 'download',
            value: 508,
          },
          {
            date: '2018/8/3',
            type: 'register',
            value: 2916,
          },
          {
            date: '2018/8/3',
            type: 'bill',
            value: 289,
          },
          {
            date: '2018/8/4',
            type: 'download',
            value: 6268,
          },
          {
            date: '2018/8/4',
            type: 'register',
            value: 4512,
          },
          {
            date: '2018/8/4',
            type: 'bill',
            value: 428,
          },
          {
            date: '2018/8/5',
            type: 'download',
            value: 6411,
          },
          {
            date: '2018/8/5',
            type: 'register',
            value: 8281,
          },
          {
            date: '2018/8/5',
            type: 'bill',
            value: 619,
          },
          {
            date: '2018/8/6',
            type: 'download',
            value: 1890,
          },
          {
            date: '2018/8/6',
            type: 'register',
            value: 2008,
          },
          {
            date: '2018/8/6',
            type: 'bill',
            value: 87,
          },
          {
            date: '2018/8/7',
            type: 'download',
            value: 4251,
          },
          {
            date: '2018/8/7',
            type: 'register',
            value: 1963,
          },
          {
            date: '2018/8/7',
            type: 'bill',
            value: 706,
          },
          {
            date: '2018/8/8',
            type: 'download',
            value: 2978,
          },
          {
            date: '2018/8/8',
            type: 'register',
            value: 2367,
          },
          {
            date: '2018/8/8',
            type: 'bill',
            value: 387,
          },
          {
            date: '2018/8/9',
            type: 'download',
            value: 3880,
          },
          {
            date: '2018/8/9',
            type: 'register',
            value: 2956,
          },
          {
            date: '2018/8/9',
            type: 'bill',
            value: 488,
          },
          {
            date: '2018/8/10',
            type: 'download',
            value: 3606,
          },
          {
            date: '2018/8/10',
            type: 'register',
            value: 678,
          },
          {
            date: '2018/8/10',
            type: 'bill',
            value: 507,
          },
          {
            date: '2018/8/11',
            type: 'download',
            value: 4311,
          },
          {
            date: '2018/8/11',
            type: 'register',
            value: 3188,
          },
          {
            date: '2018/8/11',
            type: 'bill',
            value: 548,
          },
          {
            date: '2018/8/12',
            type: 'download',
            value: 4116,
          },
          {
            date: '2018/8/12',
            type: 'register',
            value: 3491,
          },
          {
            date: '2018/8/12',
            type: 'bill',
            value: 456,
          },
          {
            date: '2018/8/13',
            type: 'download',
            value: 6419,
          },
          {
            date: '2018/8/13',
            type: 'register',
            value: 2852,
          },
          {
            date: '2018/8/13',
            type: 'bill',
            value: 689,
          },
          {
            date: '2018/8/14',
            type: 'download',
            value: 1643,
          },
          {
            date: '2018/8/14',
            type: 'register',
            value: 4788,
          },
          {
            date: '2018/8/14',
            type: 'bill',
            value: 280,
          },
          {
            date: '2018/8/15',
            type: 'download',
            value: 445,
          },
          {
            date: '2018/8/15',
            type: 'register',
            value: 4319,
          },
          {
            date: '2018/8/15',
            type: 'bill',
            value: 176,
          },
        ],
      }
    },
    mounted() {
      // var v = this
      // this.$nextTick(() => {
      //   v.drawChart()
      // })
      this.drawChart()
    },
    created() {},
    methods: {
      drawChart() {
        // Step 1: 创建 Chart 对象
        const line = new Line('container', {
          data: this.data,
          xField: 'date',
          yField: 'value',
          yAxis: {
            label: {
              // 数值格式化为千分位
              formatter: (v) =>
                `${v}`.replace(/\d{1,3}(?=(\d{3})+$)/g, (s) => `${s},`),
            },
          },
          seriesField: 'type',
          color: ({ type }) => {
            return type === 'register'
              ? '#F4664A'
              : type === 'download'
              ? '#30BF78'
              : '#FAAD14'
          },
          lineStyle: ({ type }) => {
            if (type === 'register') {
              return {
                lineDash: [4, 4],
                opacity: 1,
              }
            }
            return {
              opacity: 0.5,
            }
          },
        })
        line.render()
      },
    },
  }
</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值