Eu demorei um pouco pra chegar nessa conclusão, mas quando entendi achei legal criar mais uma função para incluir as legendas.
Mina solução ficou diferente da do instrutor, mas funcional igual.
Gostaria de dicas de melhoria!
<meta charset="utf-8">
<canvas width="600" height="400"></canvas>
<script type="text/javascript">
var tela = document.querySelector("canvas");
var pincel = tela.getContext("2d");
pincel.fillStyle = "lightgrey";
pincel.fillRect(0, 0, 300,400);
var serie2015 = [50, 25, 20, 5];
var serie2016 = [65, 20, 13, 2];
var cores = ["blue", "green", "yellow", "red"];
var navegadores = ["Chrome", "Firefox", "Safari", "Outros"];
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)
{
var tela = document.querySelector("canvas");
var pincel = tela.getContext("2d");
pincel.font = "15px Georgia";
pincel.fillStyle = "black";
pincel.fillText(texto, x, y);
}
function desenhaBarra(x, y, serie, cor, texto)
{
desenhaTexto(x,y-5,texto);
for (var posicao = 0; posicao <= 3; posicao++)
{
desenhaRetangulo(x,y,50, serie[posicao],cor[posicao]);
y = y + serie[posicao];
}
}
function desenhaLegenda(x,y,listaCor,legenda)
{
for (var posicao = 0; posicao <= 3; posicao++)
{
desenhaRetangulo(x, y,20, 20, listaCor[posicao]);
desenhaTexto(x+30, y+15, legenda[posicao]);
y = y + 30;
}
}
desenhaTexto(50,20,"Gráfico de barras");
desenhaBarra(50, 50, serie2015, cores, "2015");
desenhaBarra(150, 50, serie2016, cores, "2016");
desenhaTexto(50, 185,"Legenda:");
desenhaLegenda(50, 200, cores, navegadores);
</script>