Legendas (Bordas da caixa da legenda)
Estilo da borda da legenda
É possível alterar os cantos (bordas) da legenda, variando o parâmetro fancybox para True (padrão), o que deixa as bordas arredondadas, ou para False, o que deixa as bordas retas.
plt.figure(figsize=(8,6))
plt.scatter(cachorro_peso, cachorro_altura, label="Cachorros")
plt.scatter(gatos_peso, gatos_altura, label="Gatos")
plt.plot(pinguins_peso, pinguins_altura, marker="o", c="g", label="Pinguins")
plt.xlabel("Peso (kg)")
plt.ylabel("Altura (cm)")
plt.title("Relação entre peso e altura de diferentes animais")
plt.ylim([0,125])
plt.legend(ncol=2, fancybox=False)
plt.show()
Figura 1 - Caixa da legenda com cantos quadrados.

Sombra na caixa da legenda
É possível adicionar uma sombra na caixa da legenda, o que fornece uma noção de profundidade e estilo a caixa da legenda. Para adicionar este efeito, basta passar um True para o parâmetro shadow. O valor padrão é False, que não insere a sombra na caixa da legenda.
plt.figure(figsize=(8,6))
plt.scatter(cachorro_peso, cachorro_altura, label="Cachorros")
plt.scatter(gatos_peso, gatos_altura, label="Gatos")
plt.plot(pinguins_peso, pinguins_altura, marker="o", c="g", label="Pinguins")
plt.xlabel("Peso (kg)")
plt.ylabel("Altura (cm)")
plt.title("Relação entre peso e altura de diferentes animais")
plt.ylim([0,125])
plt.legend(ncol=2, shadow=True)
plt.show()
Figura 2 - Caixa da legenda com sombreamento.

Cor de fundo
Para alterar a cor de fundo da caixa da legenda, basta passar uma str com o nome da cor desejada (padrão é 'white') para o parâmetro facecolor. As cores disponíveis são as mesmas vistas anteriormente.
plt.figure(figsize=(8,6))
plt.scatter(cachorro_peso, cachorro_altura, label="Cachorros")
plt.scatter(gatos_peso, gatos_altura, label="Gatos")
plt.plot(pinguins_peso, pinguins_altura, marker="o", c="g", label="Pinguins")
plt.xlabel("Peso (kg)")
plt.ylabel("Altura (cm)")
plt.title("Relação entre peso e altura de diferentes animais")
plt.ylim([0,125])
plt.legend(ncol=2, shadow=True, facecolor="lightgray")
plt.show()
Figura 3 - Caixa da legenda com cor de fundo cinza.

Transparência da caixa da legenda
Para alterar a transparência da caixa da legenda, basta passar um número float entre 0.0 (completamente transparente) e 1.0(sem nenhuma transparência) para o parâmetro framealpha. O valor padrão é 0.8.
Por exemplo, para uma transparência de 0.1:
plt.figure(figsize=(8,6))
plt.scatter(cachorro_peso, cachorro_altura, label="Cachorros")
plt.scatter(gatos_peso, gatos_altura, label="Gatos")
plt.plot(pinguins_peso, pinguins_altura, marker="o", c="g", label="Pinguins")
plt.xlabel("Peso (kg)")
plt.ylabel("Altura (cm)")
plt.title("Relação entre peso e altura de diferentes animais")
plt.ylim([0,125])
plt.legend(ncol=2, shadow=True, facecolor="lightgray", loc=7, framealpha=0.1)
plt.show()
Figura 4 - Caixa da legenda com transparência de 0.1.

Já para uma transparência de 0.9:
plt.figure(figsize=(8,6))
plt.scatter(cachorro_peso, cachorro_altura, label="Cachorros")
plt.scatter(gatos_peso, gatos_altura, label="Gatos")
plt.plot(pinguins_peso, pinguins_altura, marker="o", c="g", label="Pinguins")
plt.xlabel("Peso (kg)")
plt.ylabel("Altura (cm)")
plt.title("Relação entre peso e altura de diferentes animais")
plt.ylim([0,125])
plt.legend(ncol=2, shadow=True, facecolor="lightgray", loc=7, framealpha=0.9)
plt.show()
Figura 5 - Caixa da legenda com transparência de 0.9.

Cor da borda
Para alterar a cor da borda (padrão 'black'), passamos o nome da cor, utilizando uma str, através do parâmetro edgecolor. Observe que por padrão a cor das bordas é preta, mas, visualmente, ela tem um tom acinzentado. Isto ocorre, pois por padrão, as legendas tem transparência de 80%, o que também deixa a cor preta da borda 80% transparente (tom acinzentado).
plt.figure(figsize=(8,6))
plt.scatter(cachorro_peso, cachorro_altura, label="Cachorros")
plt.scatter(gatos_peso, gatos_altura, label="Gatos")
plt.plot(pinguins_peso, pinguins_altura, marker="o", c="g", label="Pinguins")
plt.xlabel("Peso (kg)")
plt.ylabel("Altura (cm)")
plt.title("Relação entre peso e altura de diferentes animais")
plt.ylim([0,125])
plt.legend(ncol=2, shadow=True, facecolor="lightgray", edgecolor="m")
plt.show()
Figura 6 - Caixa da legenda com borda na cor magenta.

Espessura da borda
É possível alterar a espessura da borda da legenda. Entretanto, é necessário acessar as propriedades da legenda criada antes, para depois alterar a espessura. Isto é feito através do set_linewidth(), que é acessado através do get_frame(), que por sua vez esta em um objeto de legenda.
Dessa forma, precisamos criar um objeto de legenda, o que é feito atribuindo o plt.legend()para uma nova variável, da seguinte forma:
leg = plt.legend()
Agora, a variável leg contém todas as informações da legenda, inclusive o get_frame().set_linewidth(). Basta então passar a nova espessura para borda (número, int ou float), da seguinte forma:
leg.get_frame().set_linewidth(10)
Por exemplo:
plt.figure(figsize=(8,6))
plt.scatter(cachorro_peso, cachorro_altura, label="Cachorros")
plt.scatter(gatos_peso, gatos_altura, label="Gatos")
plt.plot(pinguins_peso, pinguins_altura, marker="o", c="g", label="Pinguins")
plt.xlabel("Peso (kg)")
plt.ylabel("Altura (cm)")
plt.title("Relação entre peso e altura de diferentes animais")
plt.ylim([0,125])
leg = plt.legend(ncol=2, shadow=True, facecolor="lightgray", edgecolor="m")
leg.get_frame().set_linewidth(10)
plt.show()
Figura 7 - Caixa da legenda com borda mais espessa.
