echarts&&ngx-echarts使用

1、官方网站

https://www.echartsjs.com/zh/index.html


2、angular中单引入echarts

(1)命令:npm i echarts

(2)在angular.json的scripts中引入echarts.js:"./node_modules/echarts/dist/echarts.js"

(3)html中:

<div style=" 700px;height: 400px;" nz-col #myechart>
   
</div>

 (4)ts中:

import { Component, ViewChild, ElementRef, OnInit } from '@angular/core';
declare var echarts: any;

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
    title = 'my-app';
    @ViewChild('myechart') myechart: ElementRef;
    EC1;
    constructor(){}

    ngOnInit(){
      
    }
    
    ngAfterViewInit() {
      const option = {
        title: {
            text: '折线图堆叠'
        },
        tooltip: {
            trigger: 'axis'
        },
        legend: {
            data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
        },
        grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
        },
        toolbox: {
            feature: {
                saveAsImage: {}
            }
        },
        xAxis: {
            type: 'category',
            boundaryGap: false,
            data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
        },
        yAxis: {
            type: 'value'
        },
        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.EC1 = echarts.init(this.myechart.nativeElement);
      this.EC1.setOption(option, true);
  }
}

注:div需设置宽高;

  echarts图放在ngAfterViewInit中


3、angular中使用ngx-echarts

(1) 命令:npm install echarts --save

        npm install ngx-echarts --save

(2)在angular.json的scripts中引入echarts.js:"./node_modules/echarts/dist/echarts.js"

(3)在跟模块中导入NgxEchartsModule

import {NgxEchartsModule} from 'ngx-echarts';

imports: [
    NgxEchartsModule
  ],

(4)在组件中使用echarts

  html中:

<div echarts [options]="chartOption" style=" 100%; height: 560px;"></div>

  ts中:

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
    // 定义图表项
    chartOption: any;
    constructor(){}
    ngOnInit(){
        this.chartOption = {
            title: {
                text: '折线图堆叠'
            },
            tooltip: {
                trigger: 'axis'
            },
            legend: {
                data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            },
            toolbox: {
                feature: {
                    saveAsImage: {}
                }
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
                data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
            },
            yAxis: {
                type: 'value'
            },
            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]
                }
            ]
        };  
      
    }
    
}

 参考:https://www.cnblogs.com/zero-zm/p/10014633.html

原文地址:https://www.cnblogs.com/boreguo/p/12292017.html