ionic2集成百度ECharts3

百度的ECharts图表插件很强大,完美支持移动端,github也一直有专人维护,很不错。

1.安装ECharts

用npm安装ECharts:

npm install echarts --save
npm install @types/echarts --save
2.使用ECharts

页面引入import ECharts from 'echarts';
需要在ion-content内放一个div,作为图表的容器:
<div id="main" style="width: 350px;height:300px;" ></div>
在页面的ts文件里的ionViewDidLoad方法里:

 var myChart = ECharts.init(document.getElementById('main') as HTMLDivElement);
    // 指定图表的配置项和数据
    var option = {
      title: {
        text: 'ECharts 入门示例'
      },
      tooltip: {},
      legend: {
        data: ['销量']
      },
      xAxis: {
        data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
      },
      yAxis: {},
      series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
      }]
    };
 
    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
更推荐如下这种angular操作dom的方式

1.在页面html
<div #salesBarChart style="height:300px;margin: 10px;"></div>
2.在ts文件
import {ElementRef, ViewChild} from '@angular/core';
...
@ViewChild('salesBarChart') salesBarChart: ElementRef;
...

 ionViewDidLoad() {
  let myChart=ECharts.init(this.salesBarChart.nativeElement);
.....//同上
}
3.网上找的自适应方法

在src目录下添加directives目录,添加一个auto-fit-layout.ts文件,输入以下代码:

import { Directive, ElementRef, Renderer } from '@angular/core';
 
@Directive({
    selector: '[my-auto-fit-layout]'
})
export class AutoFitLayout {
    constructor(public element: ElementRef, public renderer: Renderer) {
        //因为ionic的默认padding宽度是16
        renderer.setElementStyle(element.nativeElement, 'width', `${(document.body.clientWidth - 32).toString()}px`);
    }
}

使用这个指令时,会获取当前窗口宽度,并设置指定div的宽度。将这个指令应用到图表的容器上:

<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 350px;height:300px;" my-auto-fit-layout></div>

这样就可以在生成图表的时候自动适应当前容器的宽度了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 文章出处:https://www.pluralsight.com/guides/front-end-javascr...
    Asambojur阅读 11,516评论 3 15
  • 使用纯 CSS 实现 500px 照片列表布局 文章很长,因为介绍了如何一步一步进化到最后接近完美的效果的,不想读...
    HZ充电大喵阅读 7,528评论 0 4
  • 或者发呆、或者散步、或者煮茶、或者侍弄花草、或者什么也不做,让内心归零,把心思放空,用半天或一天的时间,让我们安住...
    孙大丫阅读 3,550评论 0 1
  • 消毒室的门被推开,一个女护士走了进来,回手把门关上。她大声地说,把裤子脱了吧,把毛剃了。 雷子喉头滚动了一下,咽了...
    路忆尘阅读 4,324评论 11 12