我有一个Angular 7应用程序,我想使用ng2-charts绘制图表。我的应用程序可用here on GitHub。
我按照指南安装了here可用的库:
npm install --save ng2-charts
npm install --save chart.js
我创建了一个组件,并添加了以下代码:
模板
<div style="display: block;" class="chart">
<canvas baseChart
[datasets]="labelMFL"
[labels]="lineChartLabels"
[options]="lineChartOptions"
[chartType]="lineChartType"
(chartHover)="chartHovered($event)"
(chartClick)="chartClicked($event)"></canvas>
</div>
组件类:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-bar-chart',
templateUrl: './bar-chart.component.html',
styleUrls: ['./bar-chart.component.less']
})
export class BarChartComponent {
public SystemName: string = "MF1";
firstCopy = false;
// data
public lineChartData: Array<number> = [ 1,8,49,50,51];
public labelMFL: Array<any> = [
{ data: this.lineChartData,
label: this.SystemName
}
];
// labels
public lineChartLabels: Array<any> = ["2018-01-29 10:00:00", "2018-01-29 10:27:00", "2018-01-29 10:28:00", "2018-01-29 10:29:00", "2018-01-29 10:30:00" ];
constructor( ) { }
public lineChartOptions: any = {
responsive: true,
scales : {
yAxes: [{
ticks: {
max : 60,
min : 0,
}
}],
xAxes: [{
min: '2018-01-29 10:08:00', // how to?
// max: '2018-01-29 10:48:00', // how to?
type: 'time',
time: {
unit: 'minute',
unitStepSize: 10,
displayFormats: {
'second': 'HH:mm:ss',
'minute': 'HH:mm:ss',
'hour': 'HH:mm',
},
},
}],
},
};
_lineChartColors:Array<any> = [{
backgroundColor: 'red',
borderColor: 'red',
pointBackgroundColor: 'red',
pointBorderColor: 'red',
pointHoverBackgroundColor: 'red',
pointHoverBorderColor: 'red'
}];
public lineChartType = 'line';
public chartClicked(e: any): void {
console.log(e);
}
public chartHovered(e: any): void {
console.log(e);
}
}
然后我在另一个组件中实例化了它:
<app-card title="Graph" showTextContent="false">
<app-bar-chart></app-bar-chart>
</app-card>
我以为chart.js存在一些问题,但我不知道是否必须将其添加到某个地方,例如angular.json
文件。
我在配置中缺少什么吗?
库的版本有问题吗?
答案 0 :(得分:1)
我有同样的问题。事实证明,系统对图表包的匹配版本非常挑剔。在完成相同的安装后,我的package.json具有以下内容:
"chart.js": "^2.8.0",
"core-js": "^2.6.9",
"ng2-charts": "^2.3.0", (or something greater than 2.0.0)
我的Angular模数都是7.2.0。我尝试回滚ng2-charts:
npm安装ng2-charts@2.0.0
此问题已解决。我不得不尝试几个版本。
此页面很有帮助: https://github.com/valor-software/ng2-charts/issues/750
祝你好运!
答案 1 :(得分:1)
使用 ng2-图表
在 Angular 9/8 中绘制图表Js完整的教程source link
第1步):安装ng2-图表
$ npm install --save ng2-charts
$ npm install --save chart.js
第2步)在应用模块中导入
// app.module.ts
...
...
import { ChartsModule } from 'ng2-charts';
@NgModule({
declarations: [
AppComponent,
...
...
],
imports: [
BrowserModule,
AppRoutingModule,
ChartsModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
第3步)在组件中使用
模板
<div class="chartjs-container">
<canvas baseChart
[datasets]="lineChartData"
[labels]="lineChartLabels"
[options]="lineChartOptions"
[colors]="lineChartColors"
[legend]="lineChartLegend"
[chartType]="lineChartType"
[plugins]="lineChartPlugins"
(chartHover)="chartHovered($event)"
(chartClick)="chartClicked($event)">
</canvas>
</div>
班级
// line-chart.component.ts
import { Component } from '@angular/core';
import { ChartDataSets, ChartOptions } from 'chart.js';
import { Color, Label } from 'ng2-charts';
@Component({
selector: 'app-line-chart',
templateUrl: './line-chart.component.html',
styleUrls: ['./line-chart.component.css']
})
export class LineChartComponent {
// Array of different segments in chart
lineChartData: ChartDataSets[] = [
{ data: [65, 59, 80, 81, 56, 55, 40], label: 'Product A' },
{ data: [28, 48, 40, 19, 86, 27, 90], label: 'Product B' }
];
//Labels shown on the x-axis
lineChartLabels: Label[] = ['January', 'February', 'March', 'April', 'May', 'June', 'July'];
// Define chart options
lineChartOptions: ChartOptions = {
responsive: true
};
// Define colors of chart segments
lineChartColors: Color[] = [
{ // dark grey
backgroundColor: 'rgba(77,83,96,0.2)',
borderColor: 'rgba(77,83,96,1)',
},
{ // red
backgroundColor: 'rgba(255,0,0,0.3)',
borderColor: 'red',
}
];
// Set true to show legends
lineChartLegend = true;
// Define type of chart
lineChartType = 'line';
lineChartPlugins = [];
// events
chartClicked({ event, active }: { event: MouseEvent, active: {}[] }): void {
console.log(event, active);
}
chartHovered({ event, active }: { event: MouseEvent, active: {}[] }): void {
console.log(event, active);
}
}