在 Angular 中使用Chart.js 和 ng2-charts的示例代碼
Chart.js是一個(gè)流行的JavaScript圖表庫(kù),ng2圖表是Angular 2+的包裝器,可以輕松地將Chart.js集成到Angular中。 我們來(lái)看看基本用法。
安裝
首先,在項(xiàng)目中安裝 Chart.js 和 ng2-charts:
# Yarn: $ yarn add ng2-charts chart.js # or npm $ npm install ng2-charts charts.js --save
當(dāng)然 ,如果你是使用Angular CLI構(gòu)建的項(xiàng)目,你也可以很容易的添加Chart.js 添加.angular-cli.json配置文件中,以便將它與應(yīng)用綁定在一直:
//: .angular-cli.json (partial) "script": [ "../node_modules/chart.js/dist/Chart.min.js" ]
現(xiàn)在,你需要在你的 app 模塊或功能模塊導(dǎo)入 ng2-charts 的ChartsModule:
//: app.module.ts import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { ChartsModule } from '@angular/charts'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, ChartsModule ], providers: [], bootstrap: [ AppComponent ] }) export class AppModule {}
使用
ng2-charts 給我們提供了一個(gè)可以應(yīng)用于HTML canvas元素的baseChart指令。 以下是一個(gè)示例,其中顯示了一些用于輸入的選項(xiàng)以及該指令輸出的chartClick事件:
//: app.component.html <div style="width: 40%;"> <canvas baseChart [chartType]="'line'" [datasets]="chartData" [labels]="chartLabels" [options]="chartOptions" [legend]="true" (chartClick)="onChartClick($event)"> </canvas> </div>
這就是組件類現(xiàn)在的樣子:
//: app.component.ts import { Component } from '@angular/core'; @Component({ ... }) export class AppComponent { chartOptions = { responsive: true }; 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' } ]; chartLabels = ['January', 'February', 'Mars', 'April']; onChartClick(event) { console.log(event); } }
選項(xiàng)
以下就是不同的可選輸入項(xiàng):
chartType
設(shè)置圖表的基本類型, 值可以是pipe,doughnut,bar,line,polarArea,radar或horizontalBar。
legend
一個(gè)布爾值,用于是否在圖表上方顯示圖例。
datasets
包含數(shù)據(jù)數(shù)組和每個(gè)數(shù)據(jù)集標(biāo)簽的對(duì)象數(shù)組。
data
如果你的圖表很簡(jiǎn)單,只有一個(gè)數(shù)據(jù)集,你可以使用data而不是datasets。
labels
x軸的標(biāo)簽集合
options
包含圖表選項(xiàng)的對(duì)象。 有關(guān)可用選項(xiàng)的詳細(xì)信息,請(qǐng)參閱官方Chart.js文檔。
在上面的例子中,我們將圖表設(shè)置為自適應(yīng)模式,根據(jù)視口大小進(jìn)行自動(dòng)調(diào)整。
colors
在上面的例子中未顯示,但你可以定義自己的顏色, 傳入包含以下值的對(duì)象文字?jǐn)?shù)組:
myColors = [ { backgroundColor: 'rgba(103, 58, 183, .1)', borderColor: 'rgb(103, 58, 183)', pointBackgroundColor: 'rgb(103, 58, 183)', pointBorderColor: '#fff', pointHoverBackgroundColor: '#fff', pointHoverBorderColor: 'rgba(103, 58, 183, .8)' }, // ...colors for additional data sets ];
使用自定義顏色時(shí),必須為每個(gè)數(shù)據(jù)集提供一個(gè)顏色對(duì)象字面量。
事件
發(fā)出兩個(gè)事件,chartClick和chartHover,它們?cè)试S對(duì)與圖表交互的用戶做出反應(yīng)。 當(dāng)前活動(dòng)點(diǎn)和標(biāo)簽作為發(fā)射事件數(shù)據(jù)的一部分返回。
動(dòng)態(tài)更新數(shù)據(jù)集
當(dāng)然,Chart.js的優(yōu)點(diǎn)在于,您的圖表可以輕松地通過(guò)動(dòng)態(tài)更新/響應(yīng)從后端或用戶輸入的數(shù)據(jù)。
下面這個(gè)示例中,我們?yōu)?月份添加了一個(gè)新的數(shù)據(jù)集合:
//: app.component.ts(partial) 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]; }
它可以像這樣使用:
//: app.component.html(partial) <button (click)="newDataPoint([900, 50, 300], 'May')"> Add data point </button>
你可能注意到了,我們不會(huì)對(duì)圖表的數(shù)據(jù)集進(jìn)行改動(dòng),而是使用新數(shù)據(jù)返回包含先前數(shù)據(jù)的新對(duì)象。 Object.assign可以很容易地做到這一點(diǎn)。
在這個(gè)特定的例子中,如果沒(méi)有提供參數(shù)時(shí),我們?yōu)?個(gè)數(shù)據(jù)集設(shè)定了默認(rèn)值為100。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用Chart.js圖表庫(kù)制作漂亮的響應(yīng)式表單
- Chart.js 輕量級(jí)HTML5圖表繪制工具庫(kù)(知識(shí)整理)
- 詳解Chart.js輕量級(jí)圖表庫(kù)的使用經(jīng)驗(yàn)
- 使用Vue.js 和Chart.js制作絢麗多彩的圖表
- ichart.js繪制虛線、平均分虛線效果的實(shí)現(xiàn)代碼
- Chart.js在Laravel項(xiàng)目中的應(yīng)用示例
- vue集成chart.js的實(shí)現(xiàn)方法
- 利用ECharts.js畫K線圖的方法示例
- JavaScript Chart 插件整理
- 詳解vue文件中使用echarts.js的兩種方式
- vue.js+Echarts開(kāi)發(fā)圖表放大縮小功能實(shí)例
- Chart.js功能與使用方法小結(jié)
相關(guān)文章
Angular2開(kāi)發(fā)——組件規(guī)劃篇
本文主要介紹了Angular2組件的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-03-03基于angular實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)的生日插件
這篇文章主要為大家詳細(xì)介紹了基于angular實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)的生日插件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Angular2使用Angular CLI快速搭建工程(一)
這篇文章主要介紹了Angular2使用Angular CLI快速搭建工程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Angular2實(shí)現(xiàn)組件交互的方法分析
這篇文章主要介紹了Angular2實(shí)現(xiàn)組件交互的方法,結(jié)合實(shí)例形式總結(jié)分析了Angular2中組件交互的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2017-12-12angular將html代碼輸出為內(nèi)容的實(shí)例
今天小編就為大家分享一篇angular將html代碼輸出為內(nèi)容的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09angularJS實(shí)現(xiàn)動(dòng)態(tài)添加,刪除div方法
下面小編就為大家分享一篇angularJS實(shí)現(xiàn)動(dòng)態(tài)添加,刪除div方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02AngularJS constant和value區(qū)別詳解
angularJS可以通過(guò)constant(name,value)和value(name,value)對(duì)于創(chuàng)建服務(wù)也是很重要的。他們之間有什么不同呢?今天小編給大家分享AngularJS constant和value區(qū)別詳解,需要的朋友參考下2017-02-02詳解angularjs的數(shù)組傳參方式的簡(jiǎn)單實(shí)現(xiàn)
本篇文章主要介紹了angularjs的數(shù)組傳參方式的簡(jiǎn)單實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07cnpm加速Angular項(xiàng)目創(chuàng)建的方法
這篇文章主要介紹了cnpm加速Angular項(xiàng)目創(chuàng)建的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Angular6實(shí)現(xiàn)拖拽功能指令drag實(shí)例詳解
這篇文章主要為大家介紹了Angular6實(shí)現(xiàn)拖拽功能指令drag實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11