0
点赞
收藏
分享

微信扫一扫

[vue]vue接入AntV G2Plot

dsysama 2022-04-01 阅读 46

文章目录

安装

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>
举报

相关推荐

0 条评论