Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. JavaScript
Code

Come Disegnare Grafici a Barre utilizzando Javascript e Canvas HTML5

by
Difficulty:BeginnerLength:MediumLanguages:

Italian (Italiano) translation by Lorenzo Bianciardi (you can also view the original English article)

Final product image
What You'll Be Creating

In un precedente tutorial avevamo visto come realizzare un grafico a torta o un grafico ad anello utilizzando il canvas HTML5. In questo tutorial invece ti mostrerò come usare Javascript e il canvas HTML5 per visualizzare graficamente i dati con i grafici a barre.

Esistono modi più semplici per creare grafici, piuttosto che codificarne uno da zero, ad esempio è possibile usufruire di questa libreria completa di grafici di CodeCanyon.

Infographic charts and graphics HTML tags library
Libreria Infographic Charts proveniente da CodeCanyon

Ma se vuoi sapere cosa serve per realizzare una libreria simile a questa, questo tutorial farà per te.

Cos'è un Grafico a Barre?

I Grafici a Barre sono strumenti molto comuni utilizzati per rappresentare i dati numerici. Dai resoconti finanziari alle presentazioni su PowerPoint agli infografici, i grafici a barre vengono utilizzati frequentemente poiché offrono una visuale dei dati numerici in una maniera veramente semplice da comprendere.

I Grafici a Barre rappresentano i dati numerici usando delle barre, a forma rettangolare, dove le larghezze o le altezze sono proporzionali ai dati numerici indicati.

Esistono molteplici tipi di grafici a barre:

  • Grafici a barre orizzontali e grafici a barre verticali a seconda dell'orientamento del grafico
  • Grafici a barre in pila o i classici grafici a barre per rappresentare molteplici tipi di dati
  • Grafici a barre in 2D o in 3D
  • ecc.

Quali Sono i Componenti di un Grafico a Barre?

Diamo un'occhiata ai componenti che compongono un grafico a barre indipendentemente dal suo tipo:

Components of a bar chart
  • I dati del grafico: sono insiemi di numeri e categorie associate che vengono rappresentate dal grafico.
  • Nome della serie dei dati (1).
  • La griglia del grafico (2): per dare un sistema di riferimento così che la rappresentazione visuale possa essere più semplice da capire.
  • Le barre (3): rettangoli pieni di colore con dimensioni proporzionali ai dati rappresentati.
  • Legenda del grafico (4): mostra la corrispondenza tra i colori utilizzati e i dati che rappresentano.

Ora che conosciamo i componenti di un grafico a barre, vediamo come possiamo scrivere il codice JavaScript per disegnare un grafico come questo.

Disegnando il Grafico a Barre utilizzando Javascript.

Impostazione del Progetto JS.

Per iniziare a disegnare usando JavaScript e il canvas HTML5, dovremo impostare il nostro progetto nella seguente maniera:

  • Crea una cartella che contenga i file del progetto; chiamiamo questa cartella bar-chart-tutorial.
  • Dentro la cartella del progetto, crea un file e chiamalo index.html. Questo conterrà tutto il nostro codice HTML.
  • Sempre dentro la cartella del progetto, crea un file e chiamalo script.js. Questo conterrà il codice Javascript per disegnare il grafico a barre.

Manterremo le cose molto semplici e aggiungeremo il seguente codice all'interno della pagina index.html.

Abbiamo l'elemento <canvas> con ID myCanvas così che possiamo richiamarlo nel nostro codice JS. Carichiamo allora il codice JS tramite il tag <script>.

Aggiungiamo il seguente codice nel file script.js:

Questo produce un riferimento all'elemento canvas e imposta la larghezza e l'altezza a 300px. Per disegnare nel canvas abbiamo solo bisogno di un riferimento al suo contesto 2D, che contiene tutti i metodi di disegno.

Aggiungendo delle piccole funzioni d'aiuto

Disegnare il grafico a barre richiede solo il saper disegnare due elementi:

  • disegnare una linea: per disegnare le linee della griglia.
  • disegnare un rettangolo colorato-totalmente: per disegnare le barre di un grafico

Andiamo a creare le funzioni JS d'aiuto per questi due elementi. Aggiungeremo le funzioni nel nostro file script.js.

La funzione drawLine contiene sei parametri:

  1. ctx: si riferisce al contesto disegnato
  2. startX: la coordinata X del punto iniziale della linea
  3. startY: la coordinata Y del punto iniziale della linea
  4. endX: la coordinata X del punto in cui termina la linea
  5. endY:  la coordinata Y del punto in cui termina la linea
  6. color: nient'altro che il colore della linea

Stiamo modificando le impostazioni del colore per il strokeStyle. Questo determina il colore usato per disegnare la linea. Usiamo ctx.save() e ctx.restore() in modo da non influenzare i colori usati al di fuori di questa funzione.

Disegniamo la linea chiamando beginPath(). Questo informa il contesto del disegno che noi stiamo iniziando a disegnare qualcosa di nuovo nel canvas. Usiamo moveTo() per impostare il punto d'inizio, chiamiamo  invece lineTo() per indicare il punto finale, e quindi eseguiamo il disegno attuale richiamando stroke().

Un'altra funzione di aiuto di cui abbiamo bisogno è una funzione per disegnare una barra, che non è altro che un rettangolo colorato. Aggiungiamolo nel script.js:

La funzione drawBar è formata da sei parametri:

  1. ctx: riferimento al contesto del disegno.
  2. upperLeftCornerX: la coordinata X dell'angolo a sinistra della barra
  3. upperLeftCornerY: la coordinata Y dell'angolo a sinistra della barra
  4. width: la larghezza della barra
  5. height: l'altezza della barra
  6. color: il colore della barra

Il Modello dei Dati del Grafico a Barre

Ora che abbiamo le funzioni d'aiuto, passiamo al modello dei dati del grafico. Tutti i tipi di grafici, inclusi i grafici a barre, hanno un modello dei dati. Il modello dei dati è un insieme strutturato di dati numerici. Per questo tutorial useremo una serie di dati per le categorie e i loro valori numerici associati che rappresentano il numero di dischi in vinile nella mia collezione di dischi raggruppati per genere musicale:

  • Musica classica: 10
  • Rock alternativo: 14
  • Pop: 2
  • Jazz: 12

Questo può essere rappresentato in Javascript sotto forma di un oggetto. Andiamo ad aggiungerlo nel nostro file script.js:

Implementando il Componento del Grafico a Barre

Andiamo ad implementare il componente che farà il disegno del nostro grafico a barre. Lo faremo aggiungendo il seguente oggetto Javascript nel nostro file script.js:

La classe inizia memorizzando le opzioni passate come parametri. Memorizza il riferimento del canvas e crea un contesto del disegno anche memorizzato come membro della classe. Quindi memorizza l'array di colors passate come opzioni.

La prossima parte è quella più consistente, la funzione draw().  Questa disegnerà il grafico disegnando prima le linee della griglia, successivamente i marcatori della griglia e infine le barre usando i parametri passati attraverso l'oggetto options.

Osservando la funzione draw(), possiamo notare che inizialmente calcoliamo il valore massimo per il nostro modello dei dati. Abbiamo bisogno di questo numero perché avremo bisogno di ridimensionare tutte le barre in base a questo valore e in base alle dimensioni del canvas. Altrimenti le nostre barre potrebbero uscire dall'area di visualizzazione; cosa che non  vogliamo assolutamente che accada.

Le variabili canvasActualHeight e il canvasActualWidth memorizzano l'altezza e la larghezza del canvas regolata usando il valore del padding passato tramite options. La variabile padding indica il numero dei pixel tra il bordo del canvas e l'interno del grafico.

Disegniamo quindi le linee della griglia del grafico. La variabile  options.gridScale imposta il pezzo utilizzato per disegnare le linee. Quindi un gridScale di 10 significherà disegnare linee di griglia ogni 10 unità.

Per disegnare le linee della griglia, usiamo la funzione di aiuto drawLine(); per il colore delle linee della griglia, lo prendiamo dalla variabile options.gridColor. Si noti che le coordinate del canvas iniziano da 0,0 nell'angolo in alto a sinistra che aumentano a destra e in basso, mentre i valori della griglia aumentano di valore dal basso verso l'alto. Questo è il motivo per cui usiamo  1 - gridValue/maxValue nella formula per calcolare il valore di gridY.

Per ogni linea della griglia, disegniamo anche il valore della linea della griglia di 2 pixel sopra la linea della griglia (ecco perché abbiamo  gridY - 2 per le coordinate Y del testo).

Quindi disegniamo le barre usando la funzione di aiuto drawBar(). Il calcolo matematico per calcolare l'altezza e la larghezza di ogni barra è abbastanza semplice; questi tengono conto del padding e del valore e colore per ogni categoria nel modello di dati del grafico.

Usando il Componente del Grafico a Barre

Adesso andiamo a vedere come usare la classe Barchart implementata sopra. Abbiamo bisogno di istanziare la classe e richiamare la funzione draw().  Aggiungiamo il seguente codice nel file script.js:

Il codice crea una nuova istanza della classe Barchart con le opzioni richieste. Caricando l'index.html su un broswer otterremo un risultato simile a questo:

Simple bar chart using html5 canvas

Aggiungendo il Nome della serie Dati e la Legenda del Grafico

Per aggiungere il nome della serie di dati sotto il grafico, è necessario aggiungere il seguente codice nel file script.js dopo il for-loop che disegna la barra:

Abbiamo anche bisogno di cambiare il modo in cui chiamiamo il componente Barchart in questa maniera:

Ed ecco come appare il risultato:

Bar chart with data series title

Per aggiungere la legenda, abbiamo bisogno da prima di modificare l'index.html facendolo assomigliare a questo:

Il tag legenda verrà usato come un contenitore per la legenda del grafico. L'attributo for collega la legenda al canvas contenente il grafico. Ora dobbiamo cambiare il codice che crea la legenda. Dobbiamo fare questo nel file index.js  dopo che il codice disegni il nome della serie di dati. Il codice identifica il tag legenda corrispondendolo ad un grafico, e l'aggiungerà alla lista delle categoria dal grafico del modello dei dati insieme al colore corrispondente. Il risultato del file index.js assomiglierà a questo: 

Quale produrrà un risultato finale come questo:

HTML5 canvas bar chart final result

Congratulazioni

Abbiamo visto che disegnare grafici usando il canvas HTML5 non è poi così difficile. Richiede solo un po 'di matematica e un po' di conoscenza di JavaScript. Ora hai tutto ciò che ti serve per disegnare i tuoi grafici a barre. 

Se si desidera avere una soluzione veloce e semplice per creare non solo grafici a barre, ma molti altri tipi di grafici, è possibile scaricare la libreria Infrographic Charts and Graphics HTML Tags o la controparte estensione di WordPress Charts and Graphs WordPress Visual Designer.

Infographic charts and graphics HTML tags library
Libreria Infographic Charts proveniente dal CodeCanyon.
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.