如何在 Angular 中使用 ng2-charts 来使用 Chart.js

2024-02-16 09:44

本文主要是介绍如何在 Angular 中使用 ng2-charts 来使用 Chart.js,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

Chart.js 是一个流行的 JavaScript 图表库,ng2-charts 是 Angular 2+ 的一个包装器,用于在 Angular 中集成 Chart.js。

在本教程中,您将使用 Chart.js 和 ng2-charts 在 Angular 应用程序中创建示例图表。

先决条件

要完成本教程,您需要:

  • 本地安装了 Node.js,您可以按照《如何安装 Node.js 并创建本地开发环境》中的步骤进行安装。
  • 对设置 Angular 项目和使用 Angular 组件有一定的了解可能会有所帮助。

本教程已使用 Node v14.13.1、npm v6.14.8、angular v10.1.6、chart.js v2.9.4 和 ng2-charts v2.4.2 进行验证。

步骤 1 —— 设置项目

您可以使用 @angular/cli 创建一个新的 Angular 项目。

在您的终端窗口中,使用以下命令:

npx @angular/cli new angular-chartjs-example --style=css --routing=false --skip-tests

这将配置一个新的 Angular 项目,样式设置为 “CSS”(而不是 “Sass”、“Less” 或 “Stylus”),没有路由,并跳过测试。

转到新创建的项目目录:

cd angular-chartjs-example

从项目文件夹中运行以下命令以安装 chart.js

npm install chart.js@2.9.4 ng2-charts@2.4.2

接下来,通过打开您的代码编辑器并修改 angular.json 来将 chart.js 添加到您的 Angular 应用程序中,以包括 Chart.min.js


{// ..."projects": {"angular-chartjs-example": {// ..."architect": {"build": {// ..."options": {// ..."scripts": ["node_modules/chart.js/dist/Chart.min.js"],"allowedCommonJsDependencies": ["chart.js"]},// ...},}}},// ...
}

然后,打开 app.module.ts 并修改它以导入 ChartsModule


import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { ChartsModule } from 'ng2-charts';import { AppComponent } from './app.component';@NgModule({declarations: [AppComponent],imports: [BrowserModule,ChartsModule],providers: [],bootstrap: [AppComponent]
})
export class AppModule { }

有了这个基本结构,您可以开始创建图表组件。

步骤 2 —— 创建图表组件

让我们从一个示例开始,该示例使用一些选项作为输入来绘制与四个月内三个不同账户相关联的值。

ng2-charts 为您提供了一个 baseChart 指令,可以应用于 HTML canvas 元素。

在代码编辑器中打开 app.component.html 并用以下代码替换内容:


<div style="width: 40%;"><canvasbaseChart></canvas>
</div>

然后,修改 canvas 以传入 chartTypelegend


<div style="width: 40%;"><canvas...[chartType]="'line'"[legend]="true"></canvas>
</div>
  • chartType:这设置了图表的基本类型。值可以是 piedoughnutbarlinepolarArearadarhorizontalBar
  • legend:一个布尔值,用于指定是否应在图表上方显示图例。

然后,修改 canvas 以传入 datasets


<div style="width: 40%;"><canvas...[datasets]="chartData"></canvas>
</div>

接下来,在代码编辑器中打开 app.component.ts 来定义模板中引用的数组:


// ...
export class AppComponent {// ...chartData = [{data: [330, 600, 260, 700],label: 'Account A'},{data: [120, 455, 100, 340],label: 'Account B'},{data: [45, 67, 800, 500],label: 'Account C'}];
}
  • datasets:这应该是一个包含数据数组和每个数据集的标签的对象数组。
  • data:或者,如果您的图表很简单,只有一个数据集,您可以使用 data 而不是 datasets,并传入一个数据点数组。

现在,重新打开 app.component.html 并修改 canvas 以传入 labels


<div style="width: 40%;"><canvas...="chartLabels"></canvas>
</div>

接下来,再次在代码编辑器中打开 app.component.ts 来定义模板中引用的数组:


// ...
export class AppComponent {// ...chartLabels = ['January','February','March','April'];
}
  • labels:X 轴的标签数组。

现在,重新打开 app.component.html 并修改 canvas 以传入 options


<div style="width: 40%;"><canvas...[options]="chartOptions"></canvas>
</div>

接下来,再次在代码编辑器中打开 app.component.ts 来定义模板中引用的对象:


// ...
export class AppComponent {// ...chartOptions = {responsive: true};
}
  • options:一个包含图表选项的对象。您可以参考官方 Chart.js 文档了解可用选项的详细信息。

重新编译您的应用程序:

npm start

当在 Web 浏览器中访问您的应用程序(通常是 localhost:4200)时,您将看到一个图表,其中绘制了 Account AAccount BAccount CAprilFebruaryMarchApril 月份的数据:

!示例图表与 ng2-chart

Chart.js 还提供了官方文档中介绍的其他属性和选项。

第三步 — 处理 chartClickchartHover 事件

两个事件被触发,分别是 chartClickchartHover,它们提供了一种方式来响应用户与图表的交互。当前活动的点和标签将作为事件数据的一部分返回。

让我们创建一个示例,将它们添加到画布中。

打开 app.component.html 并添加 chartHoverchartClick

<div style="width: 40%;"><canvas...(chartHover)="onChartHover(($event)"(chartClick)="onChartClick(($event)"></canvas>
</div>

打开 app.component.ts 并添加你在模板中引用的自定义函数:

// ...
export class AppComponent {// ...onChartHover = ($event: any) => {window.console.log('onChartHover', $event);};onChartClick = ($event: any) => {window.console.log('onChartClick', $event);};
}

重新编译你的应用程序后,你将在开发者工具中观察到 onChartHoveronChartClick 被记录。

第四步 — 动态更新数据集

使用 Chart.js 的一个亮点是能够动态更新或响应从后端或用户输入接收到的数据。

让我们继续基于前面的示例,在 4 个月内绘制 3 个账户值,并为五月份添加新的数据点。

打开 app.component.ts 并定义自定义函数:

// ...
export class AppComponent {// ...newDataPoint(dataArr = [100, 100, 100], label) {this.chartData.forEach((dataset, index) => {this.chartData[index] = Object.assign({}, this.chartData[index], {data: [...this.chartData[index].data, dataArr[index]]});});this.chartLabels = [...this.chartLabels, label];}
}

如果没有传递数组给 newDataPoint(),则默认值为 [100, 100, 100]

在数据集数组上也没有进行 mutation。使用 Object.assign 返回包含先前数据和新数据的新对象。

然后,在 app.component.html 中,在 canvas 后使用自定义函数在一个 button 中:

<div style="width: 40%;">...<button (click)="newDataPoint([900, 50, 300], 'May')">添加数据点</button>
</div>

重新编译你的应用程序后,当你与 添加数据点 按钮交互时,你将观察到图表将为 五月 月份绘制 A 账户B 账户C 账户 的值。

结论

在本教程中,你使用了 Chart.js 和 ng2-charts 在 Angular 应用程序中创建了一个示例图表。

这些库共同为你提供了以现代和动态的方式呈现数据的能力。

这篇关于如何在 Angular 中使用 ng2-charts 来使用 Chart.js的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714178

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画