Depois de muito trabalho para entender (ainda fico confuso quando trabalho com arrays) consegui resolver o exercício e ainda me arrisquei a fazer outras peripécias. O gráfico está com titulo, legenda e dados mundiais reais atualizados de 2015 até 2018.
<canvas width="600" height="400"></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
function desenhaRetangulo(x, y, largura, altura, cor)
{
pincel.fillStyle=cor;
pincel.fillRect(x,y, largura, altura);
pincel.strokeStyle='black';
pincel.strokeRect(x,y, largura, altura);
}
function desenhaTexto(x , y, texto)
{
pincel.font='bold 20px Georgia';
pincel.fillStyle='black';
pincel.fillText(texto, x, y);
}
function desenhaBarra(x, y, serie, cores, texto)
{
desenhaTexto(x + 25, y - 10, texto);
var somaAltura = 0;
for (var i = 0; i < serie.length; i++) {
var altura = 2*serie[i];
desenhaRetangulo(x, y + somaAltura, 100, altura, cores[i]);
somaAltura = somaAltura + altura;
}
}
function desenhaLegenda(x, y, cor, browser)
{
pincel.fillStyle = cor;
pincel.fillRect(x,y, 20, 10);
pincel.strokeStyle='black';
pincel.strokeRect(x,y, 20, 10);
pincel.font='bold 10px Georgia';
pincel.fillStyle='black';
pincel.fillText(browser, x + 25 , y + 10);
}
function mostraLegenda()
{
x=80;
y=35;
for(var i=0; i<browsers.length; i++)
{
desenhaLegenda(x, y, cores[i],browsers[i]);
x = x + 125;
}
}
var browsers = ['Google Chrome', "Mozilla Firefox", "Apple Safari", "Outros"];
var cores = ['blue','green','yellow', 'red'];
var serie2015 = [45,11,13,31];
var serie2016 = [49,8,13,30];
var serie2017 = [54,6,14,26];
var serie2018 = [59,5,14,22];
desenhaRetangulo(0,0,600,400,"lightgrey");
desenhaTexto(120,20,"Market share de navegadores");
desenhaBarra( 25, 100, serie2015, cores, '2015');
desenhaBarra(175, 100, serie2016, cores, '2016');
desenhaBarra(325, 100, serie2017, cores, '2017');
desenhaBarra(475, 100, serie2018, cores, '2018');
mostraLegenda();
pincel.font='bold 10px Georgia';
pincel.fillStyle='black';
pincel.fillText("Fonte: http://gs.statcounter.com/browser-market-share", 300 ,380);
</script>