Kolomdiagrammen met animatie

In het item Staafdiagrammen wordt getoond hoe je met betrekkelijk eenvoudige middelen een staaf- of kolomdiagram op kunt zetten. Daar zit ook een applicatie bij om zo'n diagram te genereren.

Op deze pagina wordt code gepresenteerd die hetzelfde doet voor een kolomdiagram, maar met een animatie die wordt getriggerd door aanwijzen met de muis of door aanraken.

Als je de code van zo'n diagram bekijkt blijkt er vaak helemaal geen ingewikkelde grafische representatie te zijn, alleen maar wat kleine .GIF-bestandjes. Elk van die bestandjes bevat een plaatje van één of hooguit een paar pixels; elk plaatje bevat één kleur.

De hier besproken code kun je downloaden voor eigen gebruik, inclusief de plaatjes.

Gebruik:

De code van het voorbeeld ziet er als volgt uit:
 
(Zet dit in de <HEAD>).

<style>
.perc { text-align:center; }
.kolom {
  vertical-align:bottom;
  text-align:center;
  width:60px;
}
</style>
 
<script>
const waarden = [3,2,2,4,1,7], kolomBreedte = 30, maxLengte = 150;
 
/* ==== Hieronder niet meer wijzigen ==== */
const aantalWaarden = waarden.length;
let totaalWaarden = 0, maxWaarde = 0;
window.addEventListener('load', function() {
  // Bepaal de som en de hoogste van waarden[]
  waarden.forEach(somWaarden);
 
  for (let i=0; i<aantalWaarden; i++) { // Toon de percentages na de balk
    toonWaarde(i);
    toonKolom(i);
    toonPercentage(i);
  }
  document.getElementById('totalen').innerHTML =
    '<b>' + totaalWaarden + '</b>';
 
  if ("ontouchstart" in document.documentElement) {  // Aanraakscherm?
    for (let i=0; i<aantalWaarden; i++)
      document.getElementById('kolom'+i).addEventListener('click',
       function() {percentage100(i)});
  } else {
    for (let i=0; i<aantalWaarden; i++) {
      document.getElementById('kolom'+i).addEventListener('mouseover',
       function() {percentage100(i)});
      document.getElementById('kolom'+i).addEventListener('mouseout',
        resetPercentages);
    }
  }
});  // event Load
 
function somWaarden(item) {
  totaalWaarden += item;
  if (item > maxWaarde) maxWaarde = item;
}  // somWaarden
 
function toonWaarde(n) {
  document.getElementById('wrde'+n).innerHTML = waarden[n];
}  //toonWaarde
 
function toonKolom(n) {
  document.getElementById('stl'+n).style.width = kolomBreedte + "px";
  document.getElementById('stl'+n).style.height =
    waarden[n] / maxWaarde * maxLengte + "px";
}  //toonKolom
 
function toonPercentage(n) {
  let helper = waarden[n] / totaalWaarden * 100;
  document.getElementById('perc'+n).innerHTML =
    helper.toFixed(1) + "%";
}  // toonPercentage
 
function percentage100(n) {
  let helper = 0.;
  for (let i=0; i<aantalWaarden; i++) {
    if (i == n || waarden[i] == waarden[n]) {
      helper = 100;
      document.getElementById('perc'+i).innerHTML =
        helper.toFixed(1) + "%";
    } else {
      helper = (waarden[i] - waarden[n]) / waarden[n] * 100;
      if (helper < 0) document.getElementById('perc'+i).innerHTML =
        helper.toFixed(1) + "%";
      else document.getElementById('perc'+i).innerHTML =
        "+" + helper.toFixed(1) + "%";
    }
  }
}  // percentage100
 
function resetPercentages() {
  for (let i=0; i<aantalWaarden; i++) toonPercentage(i);
}  // resetPercentages
</script>

(Zet dit in de <BODY> op de plaats waar het diagram moet verschijnen)

<div align="center">
<table border="1" cellspacing="1" cellpadding="2" bgcolor="#ddeeff"
  width="90%">
<tr>
<td style="background-color:#5588cc; text-align:center; color:#fff">Geef uw mening!</td>
</tr><tr>
<td align="center">
<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tr>
<td colspan="6" align="center"><b>Wat vindt u van deze site?
  [totaal <span id="totalen">??</span> stemmen]</b></td>
</tr><tr>
<td colspan="6">&nbsp; <!--  Lege regel  --></td>
</tr><tr>
<td class="perc" id="perc0">??</td>
   .
   Herhalen voor alle kolommen
   .
<td class="perc" id="perc5">??</td>
</tr><tr>
<td class="kolom" id="kolom0"><img src="pixel-1.gif" id="stl0"><br><span id="wrde0">??</span></td>
   .
   Herhalen voor alle kolommen
   .
<td class="kolom" id="kolom5"><img src="pixel-6.gif" id="stl5"><br><span id="wrde5">??</span></td>
</tr></table>
</tr></table><br>
Voorbeeld van een Kolomdiagram.</div>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb830.zip, 2562 bytes.

Opmerking:
 
Een versie voor staafdiagrammen is te vinden het item Staafdiagrammen met animatie.

 
terug

html-830; Laatste wijziging: 29 maart 2026