美文网首页前端Angular开发集锦
关于做angular4引入echarts图表

关于做angular4引入echarts图表

作者: SevenLonely | 来源:发表于2017-07-17 15:48 被阅读8781次

1.安装ngx-echarts

npm install echarts --save

npm install ngx-echarts --save


2.在项目中引入echarts

在项目包配置文件中引入js脚本

//angular-cli.json文件

{
    "apps": [{
        "scripts":[
            "../node_modules/echarts/dist/echarts.min.js",
            "../node_modules/echarts/map/js/china.js",
            "../node_modules/echarts/dist/extension/bmap.js"
        ]
    }]
}

3.使用

echarts.module.ts
import { NgModule } from '@angular/core';
import { EchartsComponent } from './echarts/echarts.component';
import { AngularEchartsModule } from 'ngx-echarts';

@NgModule({
  imports: [
    AngularEchartsModule
  ],
  declarations: [EchartsComponent],
})
export class EchartsModule { }

echarts.component.ts
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-echarts',
  templateUrl: './echarts.component.html',
  styleUrls: ['./echarts.component.scss']
})
export class EchartsComponent implements OnInit {
  showloading:boolean = true;

  constructor() { 
    
    setTimeout(()=> {
      this.showloading = false;
    }, 3000);
  }

  ngOnInit() {
  }

  chartOption = {
    title: {
      text: '堆叠区域图'
    },
    tooltip: {
      trigger: 'axis'
    },
    legend: {
      data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
    },
    toolbox: {
      feature: {
        saveAsImage: {}
      }
    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: '3%',
      containLabel: true
    },
    xAxis: [
      {
        type: 'category',
        boundaryGap: false,
        data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
      }
    ],
    yAxis: [
      {
        type: 'value'
      }
    ],
    series: [
      {
        name: '邮件营销',
        type: 'line',
        stack: '总量',
        areaStyle: { normal: {} },
        data: [120, 132, 101, 134, 90, 230, 210]
      },
      {
        name: '联盟广告',
        type: 'line',
        stack: '总量',
        areaStyle: { normal: {} },
        data: [220, 182, 191, 234, 290, 330, 310]
      },
      {
        name: '视频广告',
        type: 'line',
        stack: '总量',
        areaStyle: { normal: {} },
        data: [150, 232, 201, 154, 190, 330, 410]
      },
      {
        name: '直接访问',
        type: 'line',
        stack: '总量',
        areaStyle: { normal: {} },
        data: [320, 332, 301, 334, 390, 330, 320]
      },
      {
        name: '搜索引擎',
        type: 'line',
        stack: '总量',
        label: {
          normal: {
            show: true,
            position: 'top'
          }
        },
        areaStyle: { normal: {} },
        data: [820, 932, 901, 934, 1290, 1330, 1320]
      }
    ]
  }

  Baroptions = {
    tooltip: {
      trigger: 'item',
      formatter: "{a} <br/>{b}: {c} ({d}%)"
    },
    legend: {
      orient: 'vertical',
      x: 'left',
      data: ['直达', '营销广告', '搜索引擎', '邮件营销', '联盟广告', '视频广告', '百度', '谷歌', '必应', '其他']
    },
    series: [
      {
        name: '访问来源',
        type: 'pie',
        selectedMode: 'single',
        radius: [0, '30%'],

        label: {
          normal: {
            position: 'inner'
          }
        },
        labelLine: {
          normal: {
            show: false
          }
        },
        data: [
          { value: 335, name: '直达', selected: true },
          { value: 679, name: '营销广告' },
          { value: 1548, name: '搜索引擎' }
        ]
      },
      {
        name: '访问来源',
        type: 'pie',
        radius: ['40%', '55%'],

        data: [
          { value: 335, name: '直达' },
          { value: 310, name: '邮件营销' },
          { value: 234, name: '联盟广告' },
          { value: 135, name: '视频广告' },
          { value: 1048, name: '百度' },
          { value: 251, name: '谷歌' },
          { value: 147, name: '必应' },
          { value: 102, name: '其他' }
        ]
      }
    ]
  }



  linkoption = {
    title: {
      text: '懒猫今日访问量'
    },
    color: ['#3398DB'],
    //气泡提示框,常用于展现更详细的数据
    tooltip: {
      trigger: 'axis',
      axisPointer: { // 坐标轴指示器,坐标轴触发有效
        type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
      }
    },
    toolbox: {
      show: true,
      feature: {
        //显示缩放按钮
        dataZoom: {
          show: true
        },
        //显示折线和块状图之间的切换
        magicType: {
          show: true,
          type: ['bar', 'line']
        },
        //显示是否还原
        restore: {
          show: true
        },
        //是否显示图片
        saveAsImage: {
          show: true
        }
      }
    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: '3%',
      containLabel: true
    },
    xAxis: [{
      type: 'category',
      data: [21231,1212,21231,3213],
      axisTick: {
        alignWithLabel: true
      },
      axisLabel: {
        interval: 0,
        rotate: 20
      },
    }],
    yAxis: [{
      name: "懒猫今日访问量",
      type: 'value'
    }],
    series: [{
      name: '今日访问次数',
      type: 'bar',
      barWidth: '60%',
      label: {
        normal: {
          show: true
        }
      },
      data:[21231,1212,21231,3213]
    }]
  }


  datamapvalue = [
       {name: '海门', value: [121.15,31.89,9]},
       {name: '鄂尔多斯', value: [109.781327,39.608266,12]},
       {name: '招远', value: [120.38,37.35,12]},
       {name: '舟山', value: [122.207216,29.985295,12]},
       {name: '齐齐哈尔', value: [123.97,47.33,14]},
       {name: '盐城', value: [120.13,33.38,15]},
       {name: '赤峰', value: [118.87,42.28,16]},
       {name: '青岛', value: [120.33,36.07,18]},
       {name: '乳山', value: [121.52,36.89,18]},
       {name: '金昌', value: [102.188043,38.520089,19]}
   ];


  mapoption = {
    backgroundColor: '#404a59',
    title: {
      text: '全国主要城市空气质量',
      subtext: 'data from PM25.in',
      sublink: 'http://www.pm25.in',
      left: 'center',
      textStyle: {
        color: '#fff'
      }
    },
    tooltip: {
      trigger: 'item'
    },
    legend: {
      orient: 'vertical',
      y: 'bottom',
      x: 'right',
      data: ['pm2.5'],
      textStyle: {
        color: '#fff'
      }
    },
    geo: {
      map: 'china',
      label: {
        emphasis: {
          show: false
        }
      },
      roam: true,
      itemStyle: {
        normal: {
          areaColor: '#323c48',
          borderColor: '#111'
        },
        emphasis: {
          areaColor: '#2a333d'
        }
      }
    },
    series: [
      {
        name: 'pm2.5',
        type: 'scatter',
        coordinateSystem: 'geo',
        data: this.datamapvalue,
        symbolSize: function (val) {
          return val[2] / 10;
        },
        label: {
          normal: {
            formatter: '{b}',
            position: 'right',
            show: false
          },
          emphasis: {
            show: true
          }
        },
        itemStyle: {
          normal: {
            color: '#ddb926'
          }
        }
      },
      {
        name: 'Top 5',
        type: 'effectScatter',
        coordinateSystem: 'geo',
        data: this.datamapvalue,
        symbolSize: function (val) {
          return val[2] / 10;
        },
        showEffectOn: 'render',
        rippleEffect: {
          brushType: 'stroke'
        },
        hoverAnimation: true,
        label: {
          normal: {
            formatter: '{b}',
            position: 'right',
            show: true
          }
        },
        itemStyle: {
          normal: {
            color: '#f4e925',
            shadowBlur: 10,
            shadowColor: '#333'
          }
        },
        zlevel: 1
      }
    ]
  }

}


补充


echarts.component.html
    <div echarts [options] = "chartOption" [loading]="showloading" class="demo-chart"></div>
    <div echarts [options] = "Baroptions" [loading]="showloading" class="demo-chart"></div>
    <div echarts [options] = "linkoption" [loading]="showloading" class="demo-chart"></div>
    <div echarts [options] = "mapoption" [loading]="showloading" class="demo-chart"></div>

关于api文档

[options]:与官方演示网站的选项相同
[dataset]:您可以忽略“options”中的“data”属性,并用于dataset绑定系列数据。
[loading]:布尔属性。当您的数据未准备好时,使用它来切换加载动画的echarts。
theme:用它来初始化具有主题的echarts。你需要在主题文件.angular-cli.json或index.html。例如,如果我们要dark.js在Echarts主题页面中使用:<div echarts theme = "dark" class = "demo-chart" [options] = "chartOptions"></div>这样我们就使用成功dark主题了。
(chartInit)它暴露了echartsInstance 'chartInit'事件。所以,你可以直接调用的API一样:resize(),showLoading()


例如

html


<div echarts class="demo-chart" [options]="chartOptions" (chartInit)="onChartInit($event)"></div>

ts

onChartInit(ec) {
  this.echartsIntance = ec;
}

resizeChart() {
  if (this.echartsIntance) {
    this.echartsIntance.resize();
    this.echartsIntance.showLoading();
  }
}

后续在更新吧! 毕竟上班时间搞这个 (ૢ˃ꌂ˂ૢ)

相关文章

  • 关于做angular4引入echarts图表

    1.安装ngx-echarts 2.在项目中引入echarts 在项目包配置文件中引入js脚本 3.使用 echa...

  • vue引入Echarts组件

    一、安装Echarts组件库 二、引入 ECharts 三、按需引入 ECharts 图表和组件 上面的代码会引入...

  • vue使用echarts总结

    ECharts版本4.9.0 1、npm 安装 ECharts 2、引入 ECharts 3、创建一个图表 4、图...

  • vue中使用echarts图表

    1- 安装 echarts 依赖 npm install echarts -S 2- 创建图表全局引入 (1),在...

  • react中使用Echarts图表

    1.添加依赖 2.在图表页面引入Echarts

  • 细节优化

    ECharts图表中级入门之formatter:夜谈关于ECharts图表内的数据格式化方法 ECharts地图中...

  • 4.记录Vue项目引入Echart.js图表插件

    1.安装ECharts依赖 2.在需要的页面引入ECharts 3.绘制图表 首先创建一个DIV包裹图表 4.渲染图表

  • ECharts - 数据图表的使用

    欢迎移步我的博客阅读:《ECharts - 数据图表的使用》 关于ECharts(ECharts) ECharts...

  • 01-图表的添加

    Echarts 图表的添加 1. 引入Echarts superset的js引用,都是用npm管理的,所以我们先要...

  • vue引入echarts图表

    由于在项目中需要对数据进行可视化处理,也就是用图表展示,众所周知echarts是非常强大的插件。一开始想在网上找一...

网友评论

  • eb925f8b3fc4:大佬,我在配置的时候报错Can't bind to 'options' since it isn't a known property of 'div'. 新手学angular,求指点,感激不尽
  • 阿叔有话说:这个在angular中除了使用setOption更新数据还能使用别的方法吗?
  • 小鱼三迁:请问有绑定echarts的属性吗 因为要加在地图类型的地图json数据 需要通过echarts.registerMap来加载地图 但是找不到echarts类
  • bde6709b7db9:大神 为啥我引入 AngularEchartsModule 模块的时候报错了呢
    错误是:Module '"E:/.../node_modules/ngx-echarts/ngx-echarts"' has no exported member 'AngularEchartsModule'.
    有遇到过这个问题吗
    SevenLonely:@猫妞 额。你可以查看你用的得ngx-echarts版本,然后我出相应版本的教程。
    bde6709b7db9:@SevenLonely 竟然回复了啊 好开心 但是我改为NgxEchartsModule 之后竟然又报错了
    错误是TypeError: Object(...) is not a function ,大神知道这是因为什么吗
    SevenLonely:由于这个插件版本升级 应该引入 NgxEchartsModule 而不是之前的AngularEchartsModule ,对不起文章好久不更。给你有误解了。
  • f733cae152cf:大神,那怎么调用事件呢?
  • 守住1份堅持_9322:我在angular4中引用报错了 提示 Can't bind to 'options' since it isn't a known property of 'div'
    qwer_abb5:同问啊
    bde6709b7db9:请问你这个问题解决了吗
  • 难瘦的胖子Alice:请问大神typescript中药引用echarts 报echartS not define 怎么解决
  • ChanYeol666:大神,echartsIntance ,这个是怎么定义的???:joy:
    SevenLonely:@ChanYeol666 mInstance 这个对象我都不知道有啥,你为什么就能监听呢?
    ChanYeol666:@SevenLonely 好的,还有个问题,麻烦了
    this.mInstance.on('mouseup', function (params) {
    if (!this.down) {
    return;
    }
    this.down = false;

    const e = params.event;

    const geoCoord = this.mInstance.convertFromPixel('series', [e.offsetX, e.offsetY]);

    this.mInstance.setOption({
    series: [{
    center: geoCoord,
    zoom: 4,
    animationDurationUpdate: 1000,
    animationEasingUpdate: 'cubicInOut',
    }],
    });
    });
    这里的on报错了, 我还要导入什么吗?
    SevenLonely:这个定义一个变量为echartsIntance 就好了,this.echartsIntance = ec; 这个是给这个变量赋值 echarts对象的
  • d964b9e41d76:我是按照上面的步骤下来的,但是不显示,也不报错
    78a5ef753a90:@淺淺舊時光_3ef2 你的问题解决了吗?<div echarts [options]="echartsOption" style="height: 300px; width: 100px"></div>我写出这样还是不显示
    e8d39ba2f2de:@淺淺舊時光_3ef2 加宽高
    d964b9e41d76:请问下怎么破解
  • 嘻嘻哈哈欧拉:还有样式需要写一下高度,要不然都不显示的。
    fdb32d8587fa:惭愧,样式里面没有写单位
    fdb32d8587fa:我也遇到这样的问题,页面什么也没有,也不报错,我用样式写了高度,但是没反应,请问你具体是如何做的呢?
  • 嘻嘻哈哈欧拉:大神,为何我的页面什么也没有,也不报错?有没有源文件
  • 6b41e1e8d43f:大神大神 报这个错怎么办?encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function (position 194:50 in the original .ts file), resolving symbol NgModule in E:/2017-8-28/node_modules/ngx-echarts/node_modules/@angular/core/core.d.ts, resolving symbol AngularEchartsModule in E:/2017-8-28/node_modules/ngx-echarts/index.d.ts, resolving symbol AngularEchartsModule in E:/2017-8-28/node_modules/ngx-echarts/index.d.ts
  • 69c673da4b91:大神,按照你的配置,图却没显示出来,也没有报错,这是怎么回事
    ac6638801245:没加宽高
    69c673da4b91:@legendlzh 解决啦 感谢!
    fdb32d8587fa:解决了么?
  • meeni:大神,有一个问题请教一下,最近也在做一点图表的东西,找了一些charts,只要引入到app.module.ts中的imports里面,接下来的编译就会出现问题,报错<Critical dependency: the request of a dependency is an expression>,而删除这个引入或者注释之后就没有错误了,项目正常运行,查了好久,都没有找到问题所在,请指正
    meeni:@SevenLonely 终于解决这个问题了,因为node_module里面有自己的主@angular/core等组件,而我下载的ngx-echarts里面也有node_module,导致引入冲突,所以删掉这个第三方的插件里面的node_module就行了,完美运行。
    SevenLonely:额,没有遇到过。 不过按照我上面的步骤应该不会出错的。 如果报错了可以是你姿势不对, 调整个姿势在搞搞!
  • zy_Judy:<div theme="macarons" echarts [options]="chartOption" [loading]="showloading" class="circle-chart" style="height: 264px; width: 100%"></div>

    我这添加主题失败是为啥呢,请大神指点
    SevenLonely:theme:用它来初始化具有主题的echarts。你需要在主题文件.angular-cli.json或index.html。例如,如果我们要dark.js在Echarts主题页面中使用:<div echarts theme = "dark" class = "demo-chart" [options] = "chartOptions"></div>这样我们就使用成功dark主题了。
  • 806a667cb88a:大神,再帮我下,子路由进行增删改查以后,父路由要更新列表,那么子路由怎么让父路由更新视图,求助
    9ec2bfca3b2d:路由传参
  • 806a667cb88a:大神,报错,echarts is not defined
    SevenLonely:@无义伤情 那你们项目应该是用其他打包编译工具的吧! 那 就应该找对应的打包编译来引入。
    806a667cb88a:@SevenLonely 我们项目里,没有angular.cli.json文件,看不懂配置路径在哪
    SevenLonely:好好看看有没有安装echarts 还有echarts有没有引入
  • zi博:angular 中引用了echarts ,那请问从新获取数据后以前的怎么清除?
    SevenLonely:参考 http://echarts.baidu.com/echarts2/doc/example/dynamicLineBar.html
    SevenLonely:可以.setOption(option);
    SevenLonely:你可以看echarts官网上是怎么清除的!
  • a006803de8c0:大神 echarts.component.html 是怎么定义的? 能发出来看看吗?
    a006803de8c0:@SevenLonely 多谢了
    SevenLonely:ok,等会我更新下

本文标题:关于做angular4引入echarts图表

本文链接:https://www.haomeiwen.com/subject/edjzqxtx.html