Legendas (Bordas da caixa da legenda)

3 minute read


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.

gráfico de dispersão combinado com gráfico de linhas desenhado com matplotlib, 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.

gráfico de dispersão combinado com gráfico de linhas desenhado com matplotlib, 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.

gráfico de dispersão combinado com gráfico de linhas desenhado com matplotlib, caixa da legenda com 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.

gráfico de dispersão combinado com gráfico de linhas desenhado com matplotlib, 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.

gráfico de dispersão combinado com gráfico de linhas desenhado com matplotlib, 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.

gráfico de dispersão combinado com gráfico de linhas desenhado com matplotlib, 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.

gráfico de dispersão combinado com gráfico de linhas desenhado com matplotlib, caixa da legenda com borda mais espessa


O que irá ocorrer caso o parâmetro fancybox seja passado como False em plt.legend()?

Será adicionado uma "sombra" nas bordas da legenda

As bordas das legendas ficarão com os cantos arredondados.

As bordas das legendas ficarão com os cantos retos

Não será adicionado uma "sombra" nas bordas das legendas


Anterior Próximo

Updated: