Curso matplotlib - Gráfico de dispersão (alterando os marcadores)

4 minute read


Os marcadores tem uma grande importância no entendimento dos gráficos. Dependendo do tipo de dado, é preferivel utilizar algum tipo de marcador, que talvez não seja adequado para outros tipos de dados. Além disso, utilizar marcadores diferentes é uma das melhores formas de diferenciar séries diferentes em um mesmo gráfico.

Alterando o tipo do marcador

banner provisório

Para alterar o tipo do marcador utilizamos o parâmetro marker, que deve receber uma str contendo o símbolo desejado ou um número inteiro (int) da lista de referências de marcadores.

Os marcadores mais utilizados são:

  • "." (ponto);
  • "o" (circulo);
  • "v" (triângulo para cima);
  • "s" (quadrado);
  • "\* " (estrela);
  • "D" (diamante);
  • "+" (mais);

Na Figura abaixo você pode visualizar todos os marcadores disponíveis:

Gráfico de dispersão mostrando os diferentes marcadores

O script utilizado para desenhar o gráfico acima pode ser acessado neste link.

Você encontra maiores informações na documentação.

Por exemplo, para deixar os marcadores em formato de diamante:

plt.figure(figsize=(8,6))
plt.scatter(x,y, c='red', s = 100.1, marker = "D")
plt.show()

Figura 1 - Gráfico de dispersão com o marcador em formato de diamante.

gráfico de dispersão desenhado utilizando o **matplotlib** com os marcadores com estilo de diamante


Veremos como deixar os marcadores com símbolos diferentes mais a frente.


O que é um marker?

Uma empresa

Parâmetro utilizado para alterar o simbolo do marcador em um gráfico do matplotlib

Parâmetro utilizado para alterar o tamanho do marcador em um gráfico do matplotlib

Alterando a cor da linha do marcador (bordas do marcador)

banner provisório

Também é possível alterar a cor das linhas (bordas) dos marcadores de forma bem simples, bastando passar o nome da cor desejada (como uma str) através do parâmetro edgecolors. As cores seguem o mesmo padrão apresentado no item alterando a cor do marcador.

Por exemplo, para deixar a borda na cor preta:

plt.figure(figsize=(8,6))
plt.scatter(x,y, c='red', s = 100.1, marker = "D", edgecolors = 'k')
plt.show()

Figura 2 - Gráfico de dispersão com marcadores com bordas na cor preta.

gráfico de dispersão desenhado utilizando o **matplotlib** com os marcadores com estilo de diamante com bordas na cor preta


Também podemos passar uma sequência de elementos (list, tuple, ndarray, etc) com os nomes das cores para alterar a cor da borda de cada ponto do gráfico.

Utilizando a lista cores criada anteriormente:

plt.figure(figsize=(8,6))
plt.scatter(x,y, c='red', s = 100.1, marker = "D", edgecolors = cores)
plt.show()

Figura 3 - Gráfico de dispersão com marcadores com bordas com diversas cores.

gráfico de dispersão desenhado utilizando o **matplotlib** com os marcadores com estilo de diamante com bordas com cores diferentes


Qual linha de comando alteraria a cor da borda de um marcador para a cor verde?

plt.scatter(x, y, s='g')

plt.scatter(x, y, edge_colors='g')

plt.scatter(x, y, edgecolors='g')

plt.scatter(x, y, edgecolors='g)


Alterando a espessura da linha do marcador (espessura da borda)

banner provisório

Também é possível alterar a espessura da borda dos marcadores, o que é feito passando um número inteiro (int) ou decimal (float) através do parâmetro linewidths.

plt.figure(figsize=(8,6))
plt.scatter(x,y, c='red', s = 100.1, marker = "D", edgecolors = cores, linewidths=2.5)
plt.show()

Figura 4 - Gráfico de dispersão com marcadores com bordas com diversas cores com a borda mais espessa.

gráfico de dispersão desenhado utilizando o **matplotlib** com os marcadores com estilo de diamante com bordas com cores diferentes e bordas espessas


Também podemos passar uma sequência (list, tuple, etc) com diversos valores para a espessura das bordas. Por exemplo, podemos utilizar a list:

espessura_marcador = [1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.6, 2.8, 3.0]

que contém apenas valores numéricos e o mesmo tamanho de x para alterar a espessura da borda de cada marcador indivualmente:

plt.figure(figsize=(8,6))
plt.scatter(x,y, c='red', s = 100.1, marker = "D", edgecolors = cores, linewidths=espessura_marcador)
plt.show()

Figura 5 - Gráfico de dispersão com marcadores com bordas com diversas cores com a borda com espessura variada.

gráfico de dispersão desenhado utilizando o **matplotlib** com os marcadores com estilo de diamante com bordas com cores diferentes e bordas com espessura variada


Qual a função do parâmetro linewidths quando passado para o plt.scatter()?

Adicionar uma linha entre os pontos

Alterar a cor da borda dos marcadores

Alterar a espessura da borda dos marcadores


Alterando a cor de preenchimento do marcador

banner provisório

É possível alterar a cor de dentro (interior) dos marcadores, o que é feito passando o nome da cor desejada através do parâmetro facecolors. As cores seguem o mesmo padrão apresentado no item alterando a cor do marcador.

Entretanto, não devemos passar o parâmetro color, pois ele tem prioridade mais elevada no código e irá sobrescrever as cores.

Por exemplo, se adicionarmos o facecolors='g' no gráfico que estamos construindo, não teremos mudanças visuais no gráfico:

plt.figure(figsize=(8,6))
plt.scatter(x,y, c = 'red', s = 100.1, marker = "D", edgecolors = 'k', facecolors='g')
plt.show()

Figura 6 - Gráfico de dispersão com marcadores com o parâmetro color tendo precedencia ao parâmetro facecolors.

gráfico de dispersão desenhado utilizando o **matplotlib** sem influência do parâmetro facecolors devido ao parâmetro color


Como foi utilizado o parâmetro facecolors='g', era esperado que as cores das faces ficassem verdes, o que não aconteceu. Mas ao remover parâmetro c, teremos o resultado desejado:

plt.figure(figsize=(8,6))
plt.scatter(x,y, s = 100.1, marker = "D", edgecolors = 'k', facecolors='g')
plt.show()

Figura 7 - Gráfico de dispersão com marcadores na cor verde desenhado utilizando o parâmetro facecolors.

gráfico de dispersão desenhado utilizando o **matplotlib** alterando a cor dos marcadores através do parametro facecolors


Também é possível passar uma sequência (list, tuple, ndarray, etc) com os nomes das cores para alterar a cor de preenchimento de cada marcador do gráfico individualmente. Utilizando a lista cores criada anteriormente, obtemos o seguinte gráfico:

plt.figure(figsize=(8,6))
plt.scatter(x,y, s = 100.1, marker = "D", edgecolors = 'k', facecolors=cores)
plt.show()

Figura 8 - Gráfico de dispersão com marcadores com diversas cores.

gráfico de dispersão desenhado utilizando o **matplotlib** alterando os marcadores com diversas cores


Também é possível remover a cor do marcador, de forma a deixar ele “aberto”. Para fazer isto, basta passar facecolors = "none" ou facecolors = "None":

plt.figure(figsize=(8,6))
plt.scatter(x,y, s = 100.1, marker = "D", edgecolors = 'k', facecolors='None')
plt.show()

Figura 9 - Gráfico de dispersão com marcadores abertos.

gráfico de dispersão desenhado utilizando o **matplotlib** com os marcadores abertos


Qual a forma de deixar o marcador aberto em plt.scatter()?

plt.scatter(x,y, facecolors='none')

plt.scatter(x,y, facecolors='none', edgecolors='k')

plt.scatter(x,y, facecolors='w', edgecolors='k')



Anterior Próximo

Updated: