侧边栏壁纸
博主头像
析木之林博主等级

山不让尘,川不辞盈。

  • 累计撰写 63 篇文章
  • 累计创建 59 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

使用Ionic4和Angular 4轻松创建chart图表

已删除用户
2019-03-09 / 0 评论 / 0 点赞 / 848 阅读 / 6817 字 / 正在检测是否收录...

有时我们需要创建图表以在Ionic 4移动应用程序中显示任何进度或报告。现在,我们必须向您展示一个简单的分步教程,使用Ionic 4和Angular 4轻松创建漂亮的图表(线条,圆环和条形图)。本教程使用现有的Angular 2指令模块,可以很好地使用Angular 4该指令使得Charts.js的使用更加简单,易于与Angular 4应用程序集成,在本例中适用于Ionic 4移动应用程序。

在本教程中,我们只需要很少的工具和模块:
Node.js
Ionic 4和Angular 4
Angular 2 Charts
Charts.js

1.安装Angular 2 Charts和Charts.js

要安装Angular 2图表和Charts.js,只需输入此命令即可。

npm install ng2-charts --save
npm install chart.js --save

打开并编辑对应页面’XXX.module.ts’添加此导入。(ionic4不在app.module.ts引用,会报错)

import { ChartsModule } from ''ng2-charts’;

然后在imports数组中声明图表模块。

imports: [
  CommonModule,
  FormsModule,
  IonicModule,
  ChartsModule,
  RouterModule.forChild(routes)
]

2.显示折线图

<canvas baseChart width="300" height="400"
          [datasets]="lineChartData"
          [labels]="lineChartLabels"
          [options]="lineChartOptions"
          [colors]="lineChartColors"
          [legend]="lineChartLegend"
          [chartType]="lineChartType"
          (chartHover)="chartHovered($event)"
          (chartClick)="chartClicked($event)">
</canvas>

public lineChartData:Array<any> = [
  {data: [65, 59, 80, 81, 56, 55, 40], label: 'Series A'},
  {data: [28, 48, 40, 19, 86, 27, 90], label: 'Series B'},
  {data: [18, 48, 77, 9, 100, 27, 40], label: 'Series C'}
];

public lineChartLabels:Array<any> = ['January', 'February', 'March', 'April', 'May', 'June', 'July'];
public lineChartOptions:any = {
responsive: true
};
public lineChartColors:Array<any> = [
  { // grey
  backgroundColor: 'rgba(148,159,177,0.2)',
  borderColor: 'rgba(148,159,177,1)',
  pointBackgroundColor: 'rgba(148,159,177,1)',
  pointBorderColor: '#fff',
  pointHoverBackgroundColor: '#fff',
  pointHoverBorderColor: 'rgba(148,159,177,0.8)'
},
  { // dark grey
  backgroundColor: 'rgba(77,83,96,0.2)',
  borderColor: 'rgba(77,83,96,1)',
  pointBackgroundColor: 'rgba(77,83,96,1)',
  pointBorderColor: '#fff',
  pointHoverBackgroundColor: '#fff',
  pointHoverBorderColor: 'rgba(77,83,96,1)'
},
  { // grey
backgroundColor: 'rgba(148,159,177,0.2)',
borderColor: 'rgba(148,159,177,1)',
pointBackgroundColor: 'rgba(148,159,177,1)',
pointBorderColor: '#fff',
pointHoverBackgroundColor: '#fff',
pointHoverBorderColor: 'rgba(148,159,177,0.8)'
 }
];
public lineChartLegend:boolean = true;
public lineChartType:string = 'line';
public randomize():void {
  let _lineChartData:Array<any> = new Array(this.lineChartData.length);
  for (let i = 0; i < this.lineChartData.length; i++) {
    _lineChartData[i] = {data: new Array(this.lineChartData[i].data.length), label:      this.lineChartData[i].label
};
for (let j = 0; j < this.lineChartData[i].data.length; j++) {
  _lineChartData[i].data[j] = Math.floor((Math.random() * 100) + 1);
	}
}
this.lineChartData = _lineChartData;
}
// events
public chartClicked(e:any):void {
console.log(e);
}
public chartHovered(e:any):void {
console.log(e);
}	

3.创建条形图

<canvas baseChart
      [datasets]="barChartData"
      [labels]="barChartLabels"
      [options]="barChartOptions"
      [legend]="barChartLegend"
      [chartType]="barChartType"
      (chartHover)="chartHovered($event)"
      (chartClick)="chartClicked($event)">
</canvas>

public lineChartData:Array<any> = [
  {data: [65, 59, 80, 81, 56, 55, 40], label: 'Series A'},
  {data: [28, 48, 40, 19, 86, 27, 90], label: 'Series B'},
  {data: [18, 48, 77, 9, 100, 27, 40], label: 'Series C'}
];
public lineChartLabels:Array<any> = ['January', 'February', 'March', 'April', 'May', 'June', 'July'];

public lineChartOptions:any = {
 responsive: true
};

public lineChartColors:Array<any> = [
{ // grey
 backgroundColor: 'rgba(148,159,177,0.2)',
 borderColor: 'rgba(148,159,177,1)',
 pointBackgroundColor: 'rgba(148,159,177,1)',
 pointBorderColor: '#fff',
 pointHoverBackgroundColor: '#fff',
 pointHoverBorderColor: 'rgba(148,159,177,0.8)'
},
{ // dark grey
 backgroundColor: 'rgba(77,83,96,0.2)',
 borderColor: 'rgba(77,83,96,1)',
 pointBackgroundColor: 'rgba(77,83,96,1)',
 pointBorderColor: '#fff',
 pointHoverBackgroundColor: '#fff',
 pointHoverBorderColor: 'rgba(77,83,96,1)'
},
{ // grey
 backgroundColor: 'rgba(148,159,177,0.2)',
 borderColor: 'rgba(148,159,177,1)',
 pointBackgroundColor: 'rgba(148,159,177,1)',
 pointBorderColor: '#fff',
 pointHoverBackgroundColor: '#fff',
 pointHoverBorderColor: 'rgba(148,159,177,0.8)'
 }
];
public lineChartLegend:boolean = true;
public lineChartType:string = 'line';
public randomize():void {
let _lineChartData:Array<any> = new Array(this.lineChartData.length);
for (let i = 0; i < this.lineChartData.length; i++) {
_lineChartData[i] = {data: new Array(this.lineChartData[i].data.length), label: this.lineChartData[i].label};
for (let j = 0; j < this.lineChartData[i].data.length; j++) {
  _lineChartData[i].data[j] = Math.floor((Math.random() * 100) + 1);
}
}
 this.lineChartData = _lineChartData;
}
// events
public chartClicked(e:any):void {
 console.log(e);
}
public chartHovered(e:any):void {
 console.log(e);
}

4.创建环形图标

<canvas baseChart
      [data]="doughnutChartData"
      [labels]="doughnutChartLabels"
      [chartType]="doughnutChartType"
      (chartHover)="chartHovered($event)"
      (chartClick)="chartClicked($event)">
</canvas>	

ts

public doughnutChartLabels:string[] = ['Download Sales', 'In-Store Sales', 'Mail-Order Sales'];
public doughnutChartData:number[] = [350, 450, 100];
public doughnutChartType:string = 'doughnut';
// events
public chartClicked(e:any):void {
  console.log(e);
}
public chartHovered(e:any):void {
  console.log(e);
}

这是详细的官方文档 https://www.chartjs.org/docs/latest/

0

评论区