Isso não é bem uma dúvida, é mais um compartilhamento de idéia/desafio com os colegas e um lembrete pessoal futuro para melhoramentos. Caso alguém apresente a solução completa ou até melhorada, marco como solucionado. Este programa é baseado no exercício da "flor inofensiva" (LP2.2.5)
<canvas width="600" height="400"></canvas>
<script>
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);
    function desenhaCirculo(x, y, raio, cor) {
        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * Math.PI);
        pincel.fill();
    }
    function desenhaFlor(x, y, raio) {
        desenhaCirculo(x, y+2*raio, raio, 'blue'); //inferior
        desenhaCirculo(x, y, raio, 'red'); //central
        desenhaCirculo(x, y-2*raio, raio, 'yellow'); //superior
        desenhaCirculo(x-2*raio, y, raio, 'orange');//esquerdo
        desenhaCirculo(x+2*raio, y, raio, 'black');//direito
    }
    desenhaFlor(300, 200,10);//flor central
    desenhaFlor(300, 140,10);//superior
    desenhaFlor(240, 200,10);//esquerda
    desenhaFlor(360, 200,10);//direita
    desenhaFlor(300, 260,10);//inferior
</script>
Minha idéia de melhoramento é basicamente: expandir a função de "modo que lembra a fractal"(ou seja, expandindo progressivamente nas novas pontas de cada ponta anterior), talvez aplicando recursão. preencher as cores de modo aleatório, fazendo um lista de cores com um "case/breake". Parece que não dá para inserir imagem, então só para ter uma idéia da figura formada é uma "flor" em cada uma das pontas da flor central, meio que formando uma cruz simétrica estilizada.
 
            