
图表是以易于理解和分析的格式直观地显示大量数据集的一个好 *** 。它们是显示两个或多个数据集之间存在的关系的好 *** 。
存在不同类型的图表,其中一些包括条形图、折线图、饼图、雷达图等。
在这篇文章中,你将利用一个名为Angular的前端框架以及一个名为的JavaScript库来显示一个名为的加密货币平台的数据。你还将利用Coinranking的API,将加密货币的列表及其价格可视化。
要跟上本教程,请确保你熟悉下面列出的技术的基本知识:
首先,你需要使用以下步骤安装和设置Angular:
要安装npm,你需要。这可以通过Node.js网站完成。
Node.js是一个开源的跨平台服务器环境,可以在windows、Linux、Unix、macos等系统上运行。它允许我们利用npm将Chart.js等库安装到我们的Angular应用程序中。
一旦Node.js安装完毕,你现在可以通过终端/命令行使用以下命令将Angular下载到你的机器中:
npm install -g @angular/cli
为了确认Angular已经被安装,你可以通过运行 ng v 命令来查看版本,这将给我们带来以下结果:

Angular CLI版本
现在Angular已经安装完毕,你现在可以通过在终端运行以下命令来创建一个新项目:
ng new ng-chart --routing=false --style=css cd ng-chart code .
通过上面的命令,我们已经用 ng new 命令创建了一个新的Angular项目,禁用了路由,并将样式格式设为CSS。
接下来,使用 cd 命令导航到项目目录,并在Visual Studio Code中打开该项目。
你不需要为这个项目生成一个新的组件。你将使用Angular CLI创建的两个默认文件 app.component.ts 和 app.component.hmtl –来渲染图表。这些文件都在你项目的 app 目录下。
app.component.html 文件包含一些你需要去掉的模板代码。Chart.js库现在可以被集成到你的应用程序中。
要将chart.js库添加到Angular应用程序中,你需要在终端中运行以下命令:
npm i chart.js
为了确认chart.js已经被安装,你可以检查你的项目中的 package.json 文件。你应该在 dependencies 对象中看到chart.js的版本,如下图所示:

Chart.js版本
现在你可以在你的项目中的 app.component.ts 文件中导入chart.js库,如下图所示:
import Chart from 'chart.js/auto';
接下来,创建一个名为 chart 的变量,并将其设置为一个空数组:
chart: any = []
导航到的入门页面,抓取带有静态数据的模板代码,并将其粘贴到 ngonInit 生命周期钩子中:
注意:Angular的 ngOnInit 生命周期钩子在组件初始化后会被触发一次。也就是说,它只在Angular组件发生之一次变化检测时被调用。
export class AppComponent {
title = 'ng-chart';
chart: any = [];
constructor() {}
ngOnInit() {
this.chart = new Chart('canvas', {
type: 'bar',
data: {
labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
datasets: [
{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
borderWidth: 1,
},
],
},
options: {
scales: {
y: {
beginAtZero: true,
},
},
},
});
}
}
在上面的代码中,在数据对象中,有一个 labels 键,它包含一个有不同值的数组。在这之下,你有一个 datasets 数组,其中包含一个对象。
在这个对象中,有一个叫做 data 的数组,里面有不同的数字值。这些值代表将在浏览器中的图表上显示的数据。
在图表显示在浏览器中之前,你还需要抓取 <canvas></canvas> html标签,并将其粘贴到 app.component.html 文件中,如下所示:
<div>
<canvas id="canvas">{{chart}}</canvas>
</div>
注意:在 app.component.html 文件中,<canvas> 标签有一个叫做 canvas 的 id 。这必须与 app.component.ts 文件中 new Chart 对象前的括号内的值相同。如果这两个名字不一样,图表将不会显示。
现在你可以通过在终端运行 ng serve --open 命令来编译和服务该项目。你应该有以下结果:

用静态数据显示图表
要整合REST API,请使用前往Coinranking网站。你应该看到一个类似这样的页面:

Coinranking网站
首先点击 “Get API Key” 按钮。你将被引导到一个页面,在那里你可以创建一个账户,并有机会获得API密钥。
复制API密钥并打开Angular项目中的 environment.ts 文件。在该对象中,创建一个名为 API_KEY 的变量,并粘贴从CoinRanking生成的API密钥,如下图所示:
export const environment = {
production: false,
API_KEY: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
};
接下来,你需要复制API来获取中的所有加密货币币。

Coinranking API文档
为了使用上面复制的API链接,你需要通过运行下面的命令创建一个Angular Service:
ng g service services/chart
随着 chart.service.ts 文件的创建,你现在可以粘贴代码,帮助我们消费REST API,如下图所示:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { environment } from 'src/environments/environment';
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'X-My-Custom-Header': `${environment.API_KEY}`,
'access-Control-Allow-Origin': '*',
}),
};
@Injectable({
providedIn: 'root',
})
export class ChartService {
private baseUrl = 'https://api.coinranking.com/v2/coins';
private proxyUrl = 'https://cors-anywhere.herokuapp.com/';
constructor(private http: HttpClient) {}
cryptoData() {
const url = `${this.proxyUrl}${this.baseUrl}`;
return this.http.get(url, httpOptions);
}
}
总结一下上面的代码,以下是我们所做的:
HttpClient, HttpHeaders ,以及第3行的 environment 文件。httpOptions 的变量。 httpOptions 变量持有一个对象,其中包含上面导入的 HttpHeaders 配置。这里我们设置了content-type,将 environment 文件中的 API_KEY 变量传递到头文件中,然后将 Access-Control-Allow-Origin 设置为通配符。这意味着浏览器应该允许来自原点的请求代码。baseUrl 的私有变量来保存REST API,而在第28行,我们创建了一个名为 proxyUrl 的变量来保存CORS Anywhere链接。CORS Anywhere链接是一个Node *** *** ,它在被 *** 的请求中添加了CORS头信息,并有助于在这个过程中防止CORS错误。HttpClient 注入到构造函数中,这使得它可以在服务中访问。cryptoData() 的函数。在这个函数中,有一个叫做 url 的变量。我们使用url变量来追加 proxyUrl 和 baseUrl 变量来构建我们的API。此外,在 return 语句中,我们使用 get() http *** 从REST API中获取数据。为了使 HttpClient 工作,你需要导入并注入 HttpClientModule 到 app.module.ts 文件中,可以看到如下:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, HttpClientModule],
providers: [],
bootstrap: [AppComponent],
})
export class AppModule {}
正如上面所看到的,HttpClientModule 被导入并注入了 imports 数组中。
为了在图表上显示数据,你需要前往 app.component.ts 文件并带入你的图表服务文件,如下图所示:
import { Component } from '@angular/core';
import Chart from 'chart.js/auto';
import { ChartService } from './service/chart.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent {
title = 'ng-chart';
chart: any = [];
result: any;
coinPrice: any;
coinName: any;
constructor(private service: ChartService) {}
ngOnInit() {
this.service.cryptoData().subscribe((res) => {
this.result = res;
this.coinPrice = this.result.data.coins.map((coins: any) => coins.price);
this.coinName = this.result.data.coins.map((coins: any) => coins.name);
conSOLe.log(this.coinPrice);
console.log(this.coinName);
this.chart = new Chart('canvas', {
type: 'bar',
data: {
labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
datasets: [
{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
borderWidth: 1,
},
],
},
options: {
scales: {
y: {
beginAtZero: true,
},
},
},
});
});
}
}
result, coinPrice, 和 coinName。这些变量将在以后的项目中用来保存数据。ngOnInit() 生命周期钩子中,我们在第 line 20 调用了 cryptoData() 函数,该函数返回一个被订阅的观察变量。这使得我们可以从过程中的数据中返回一个响应。this 关键字调用 result 变量,并将其设置为持有数据。console.log() 函数来显示数据,如下图所示:
控制台上显示的来自CoinRanking API的数据。
最后要做的是将上图中看到的数据绘制成图表。
ngOnInit() {
this.service.cryptoData().subscribe((res) => {
this.result = res;
this.coinPrice = this.result.data.coins.map((coins: any) => coins.price);
this.coinName = this.result.data.coins.map((coins: any) => coins.name);
console.log(this.coinPrice);
console.log(this.coinName);
this.chart = new Chart('canvas', {
type: 'bar',
data: {
labels: this.coinName,
datasets: [
{
data: this.coinPrice,
borderColor: '#3e95cd',
label: 'Coin Price',
backgroundColor: 'rgba(93, 175, 89, 0.1)',
borderWidth: 3,
},
],
},
});
});
}
现在通过运行 ng serve --open 命令编译该项目,并在浏览器中看到结果,如下图所示:

图表的最终结果
注意:你有可能在编译项目后遇到一个错误,即(FAIled to load resource: the server responded with a status of 403 (Forbidden))。
你需要做的是点击控制台中的CORS Anywhere链接,它将在一个新的标签页中打开,上面有一个按钮,写着Request temporary access to the demo server。点击该按钮,然后刷新页面。数据现在应该反映在图表上。
在本教程中,你学到了如何在Angular应用程序中安装和集成Chart.js库和REST API。如果你想访问代码库,你可以在github上。
扫描二维码推送至手机访问。
版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。
Linux面板环境安装,主要支持LNMP和LAMP、Tomcat、node.js。不过对于大部分站长来说,主要是LNMP和LAMP两个环境的安装。 LNMP和LAMP两个环境的最大区别是,前者采用Nginx作为Web服务器,后者则采用Apache作为Web服务器。(选择哪个作为您的Web服务器,可...
宝塔面板的安全管理可以设置SSH开关、禁用PING、放行端口、屏蔽IP等相关的操作。 SSH的设置 SSH的关闭与启动,点击下图的开关,即可开启或关闭SSH远程连接。 SSH端口的修改,SSH远程连接的默认端口为22,修改端口前,请先查看该端口是否被占用。 PING命令的...
宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...
市场上有各种各样的数据库可供选择,用户通常可以仔细考虑PostgreSQL与SQL Server,以便为他们的用例找出更好的选择。使用PostgreSQL进行运营的组织可能希望切换到像Microsoft SQL Server这样的数据库,因为它主要迎合不同的数据仓库解决方案、电子商务和其他业务线...
您可能听说过SaaS,您可能听说过PaaS和IaaS,但您听说过函数即服务 (FaaS) 吗? FaaS市场正在快速增长。根据Allied Market Research的数据,2018年市场价值 。预计到2026年,这一数字将增长到240亿美元——这意味着该行业将从2020年到2026年以2...
薪水可能是某些人的禁忌话题,但如果您是WordPress开发人员,或者正在考虑从事WordPress开发工作,那么了解人们的收入对于最大化您自己的赚钱能力至关重要。 所以让我们谈谈这个秘密——让我们谈谈WordPress开发人员的平均工资。这样,您将确切地知道自己的价值(以及如何赚取更多)。...