Elementos auxiliares (Círculo)

2 minute read


O patch disponível para inserir círculos é o Circle. É necessário passar apenas o parâmetro xy para desenhar esta forma, que recebe uma tuple com dois números, que são as coordenadas do centro do círculo. Por exemplo, para inserir um círculo em x = 2 e y = 2:

plt.figure(figsize=(8,6))
plt.scatter(x,y)
plt.gca().add_patch(patches.Circle(xy=(2,2)))
plt.show()

Figura 1 - Gráfico de dispersão com um círculo inserido.

gráfico de dispersão desenhado com matplotlib com um círculo inserido


Observe que o círculo não ficou perfeito, o que ocorreu devido ao número de pixels utilizados em um eixo, comparado ao outro eixo. Neste exemplo, temos que os valores de x e y tem o mesmo range. Entretanto, a figura esta sendo criada mais larga (eixo x) do que alta (eixo y), e.g. figsize=(8,6). Dessa forma, existe um incompatibilidade entre os pixels do eixo x e do eixo y, o que faz com que o círculo fique visualmente distorcido, e seja renderizado de forma ovalada.

Para contornar este problema, temos algumas opções. A primeira delas, é utilizar uma figura de altura e largura iguais. Por exemplo:

plt.figure(figsize=(6,6))
plt.scatter(x,y)
plt.gca().add_patch(patches.Circle(xy=(2,2)))
plt.show()

Figura 2 - Gráfico de dispersão com um círculo inserido.

gráfico de dispersão desenhado com matplotlib com um círculo inserido


Uma outra alternativa, é adicionar o método plt.axis() (que será estudado com mais detalhes um pouco a frente) e passar a str "equal" para este método, o que vai forçar a renderização de forma correta:

plt.figure(figsize=(8,6))
plt.scatter(x,y)
plt.gca().add_patch(patches.Circle(xy=(2,2)))
plt.axis("equal")
plt.show()

Figura 3 - Gráfico de dispersão com um círculo inserido.

gráfico de dispersão desenhado com matplotlib com um círculo inserido


Mas observe que agora a faixa do eixo x é maior do que a faixa do eixo y, sendo este o resultado da aplicação do plt.axis("equal").

A outra opção é desenhar uma elipse com formato de círculo (veremos em seguida como fazer).

Raio do círculo

Para determinar qual o raio o círculo terá, basta passar um número (int ou float) para o parâmetro radius. Por padrão, radius=5. Por exemplo, para desenhar um círculo de raio 1:

plt.figure(figsize=(8,6))
plt.scatter(x,y)
plt.gca().add_patch(patches.Circle(xy=(2,2), radius=1))
plt.axis("equal")
plt.show()

Figura 4 - Gráfico de dispersão com um círculo inserido com raio igual a 1.

gráfico de dispersão desenhado com matplotlib com um círculo inserido com raio igual a 1


Edições

O patches.Circle aceita uma série de parâmetros para a sua edição, sendo possível alterar a cor de preenchimento (color ou facecolor), remover o preenchimento (fill), inserir linhas (linestyle, linewidth, edgecolor), inserir estilos de preenchimento (hatch), adicionar transparência (alpha), determinar a ordem de plotagem (zorder), inserir nome para legenda (label), entre outros, de forma muito similar ao que temos feito até aqui.

Você encontra maiores detalhes na documentação.


Qual informação deve ser passada para o parâmetro xy?

raio do círculo e espessura da linha, respectivamente

a posição de x e y do centro do círculo, respectivamente

a posição y e x do centro do círculo, respectivamente

os valores de espessura e largura do círculo, respectivamente


Anterior Próximo

Updated: