Integrar chart.js en Angular para mostrar gráficas

Hola a todos, hoy os voy a explicar como podemos integrar graficas con chart.js en nuestra aplicación Angular.

Con chart.js podemos integrar gráficas a nuestra aplicación Angular de una forma sencilla.

Puedes ver como funciona desde su página oficial.

Creación proyecto Angular

Lo primero es crear un proyecto Angular, sino sabes como se hace, te dejo un tutorial aquí:

Crear y ejecutar un proyecto angular

Instalación de chart.js

Abre una terminal y escribe:

$ npm i chart.js

Creación de componentes

Antes de meternos en cada una de las graficas, vamos a crear 3 componentes para poner 3 tipos de gráficas diferentes. Abre una terminal y escribe:

$ ng g bar-chart line-chart pie-chart

En app.module, deben estar importados:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { LineChartComponent } from './line-chart/line-chart.component';
import { BarChartComponent } from './bar-chart/bar-chart.component';
import { PieChartComponent } from './pie-chart/pie-chart.component';

@NgModule({
  declarations: [
    AppComponent,
    LineChartComponent,
    BarChartComponent,
    PieChartComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Y en app.routing.module ponemos cada una de las rutas a cada componente:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { LineChartComponent } from './line-chart/line-chart.component';
import { BarChartComponent } from './bar-chart/bar-chart.component';
import { PieChartComponent } from './pie-chart/pie-chart.component';

const routes: Routes = [
  { path: 'line-chart', component: LineChartComponent },
  { path: 'bar-chart', component: BarChartComponent },
  { path: 'pie-chart', component: PieChartComponent },
  { path: '**', pathMatch: 'full', redirectTo: 'line-chart'}
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

En el app.component.html, pegamos el siguiente código:

</pre>
<ul>
 	<li><a href="#">Line chart</a></li>
 	<li><a href="#">Bar chart</a></li>
 	<li><a href="#">Pie chart</a></li>
</ul>
<pre>

Line en chart.js

Una gráfica de linea son varios puntos unidos por una misma linea. Usaremos los datos de ejemplo de su página oficial.

line chart.js 1

En el fichero line-chart.component.ts, pegamos el siguiente código:

import { Component, OnInit } from '@angular/core';
// Necesitamos importar Chart desde chart.js
import { Chart, ChartType } from 'chart.js/auto';

@Component({
  selector: 'app-line-chart',
  templateUrl: './line-chart.component.html',
  styleUrls: ['./line-chart.component.scss']
})
export class LineChartComponent implements OnInit {

  // Atributo que almacena los datos del chart
  public chart: Chart;

  ngOnInit(): void {
    // datos
    const data = {
      labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
      datasets: [{
        label: 'My First Dataset',
        data: [65, 59, 80, 81, 56, 55, 40],
        fill: false,
        borderColor: 'rgb(75, 192, 192)',
        tension: 0.1
      }]
    };
    // Creamos la gráfica
    this.chart = new Chart("chart", {
      type: 'line' as ChartType, // tipo de la gráfica 
      data: data // datos 
    });
  }
}

En el fichero line-chart.component.html, pegamos el siguiente código:

<canvas id="chart">{{ chart }}</canvas>

Este es el resultado:

line chart.js 2

Bar en chart.js

Una gráfica de barras son varias líneas verticales que representan datos. Usaremos los datos de ejemplo de su página oficial.

bar chart.js 3

En el fichero bar-chart.component.ts, pegamos el siguiente código:

import { Component, OnInit } from '@angular/core';
import { Chart, ChartType } from 'chart.js/auto';

@Component({
  selector: 'app-bar-chart',
  templateUrl: './bar-chart.component.html',
  styleUrls: ['./bar-chart.component.scss']
})
export class BarChartComponent implements OnInit {

  // Atributo que almacena los datos del chart
  public chart: Chart;

  ngOnInit(): void {
    // datos
    const data = {
      labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
      datasets: [{
        label: 'My First Dataset',
        data: [65, 59, 80, 81, 56, 55, 40],
        backgroundColor: [
          'rgba(255, 99, 132, 0.2)',
          'rgba(255, 159, 64, 0.2)',
          'rgba(255, 205, 86, 0.2)',
          'rgba(75, 192, 192, 0.2)',
          'rgba(54, 162, 235, 0.2)',
          'rgba(153, 102, 255, 0.2)',
          'rgba(201, 203, 207, 0.2)'
        ],
        borderColor: [
          'rgb(255, 99, 132)',
          'rgb(255, 159, 64)',
          'rgb(255, 205, 86)',
          'rgb(75, 192, 192)',
          'rgb(54, 162, 235)',
          'rgb(153, 102, 255)',
          'rgb(201, 203, 207)'
        ],
        borderWidth: 1
      }]
    };

    // Creamos la gráfica
    this.chart = new Chart("chart", {
      type: 'bar' as ChartType, // tipo de la gráfica 
      data: data, // datos 
      options: { // opciones de la gráfica 
        scales: {
          y: {
            beginAtZero: true
          }
        }
      },
    });
  }

}

En el fichero bar-chart.component.html, pegamos el siguiente código:

<canvas id="chart">{{ chart }}</canvas>

Este es el resultado:

bar chart.js 4

Pie en chart.js

Una gráfica pie (tarta) es una representación circular de datos. Usaremos los datos de ejemplo de su página oficial.

pie chart.js 5

En el fichero pie-chart.component.ts, pegamos el siguiente código:

import { Component, OnInit } from '@angular/core';
// Necesitamos importar Chart desde chart.js
import { Chart, ChartType } from 'chart.js/auto';

@Component({
  selector: 'app-pie-chart',
  templateUrl: './pie-chart.component.html',
  styleUrls: ['./pie-chart.component.scss']
})
export class PieChartComponent implements OnInit {

  // Atributo que almacena los datos del chart
  public chart: any;

  ngOnInit(): void {
    // datos
    const data = {
      labels: [
        'Red',
        'Green',
        'Yellow',
        'Grey',
        'Blue'
      ],
      datasets: [{
        label: 'My First Dataset',
        data: [11, 16, 7, 3, 14],
        backgroundColor: [
          'rgb(255, 99, 132)',
          'rgb(75, 192, 192)',
          'rgb(255, 205, 86)',
          'rgb(201, 203, 207)',
          'rgb(54, 162, 235)'
        ]
      }]
    };

     // Creamos la gráfica
    this.chart = new Chart("chart", {
      type: 'pie' as ChartType, // tipo de la gráfica 
      data: data, // datos 
    });
  }

}

En el fichero pie-chart.component.html, pegamos el siguiente código:

<canvas id="chart">{{ chart }}</canvas>

Este es el resultado:

pie chart.js 2

Hay muchas opciones que aún queda por explorar pero eso ya lo haremos en otro tutorial.

Te dejo un video donde lo explico con detalle.

También el repositorio Github donde esta el código.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *