W3docs

Marcadores do Matplotlib

Aprenda a usar e personalizar marcadores do Matplotlib em Python. Cobre estilos, tamanho, cor, preenchimento e controle por ponto.

Marcadores são os símbolos que o Matplotlib desenha em cada ponto de dados de um gráfico. Escolher o estilo de marcador certo — e saber como redimensioná-lo, recolorí-lo e preenchê-lo — pode ser a diferença entre um gráfico confuso e um que comunica com clareza. Esta página cobre todos os estilos de marcadores disponíveis no Matplotlib, como personalizar a aparência deles e quando usar plot() versus scatter() para controle por ponto.

O que é um Marcador no Matplotlib?

Um marcador é uma forma renderizada em cada coordenada (x, y) de um gráfico. Você controla qual forma é usada com o parâmetro marker (ou como parte de uma string de formato). Os marcadores são independentes da linha que conecta os pontos de dados — é possível exibir um sem o outro.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 5, 3, 7, 4]

# Line with markers
plt.plot(x, y, marker='o')

# Markers only — no connecting line
plt.plot(x, y, marker='s', linestyle='None')

plt.show()

Todos os Estilos de Marcadores Integrados

O Matplotlib vem com mais de 30 códigos de marcadores integrados. A tabela abaixo lista os mais comumente usados.

Código do marcadorForma
'o'Círculo
's'Quadrado
'D'Diamante
'd'Diamante fino
'^'Triângulo (para cima)
'v'Triângulo (para baixo)
'<'Triângulo (para a esquerda)
'>'Triângulo (para a direita)
'p'Pentágono
'h'Hexágono 1
'H'Hexágono 2
'8'Octógono
'*'Estrela
'+'Cruz
'x'X
'X'X preenchido
`''`
'_'Linha horizontal
'.'Ponto (ponto pequeno)
','Pixel
'1'Tri-baixo
'2'Tri-cima
'3'Tri-esquerda
'4'Tri-direita
'None' ou ''Sem marcador

Para ver todos os marcadores de uma vez, você pode iterar sobre matplotlib.markers.MarkerStyle.markers:

import matplotlib.pyplot as plt
import matplotlib.markers as mmarkers

print(list(mmarkers.MarkerStyle.markers.keys()))

Usando Marcadores em um Gráfico de Linhas

A função plot() aceita um argumento marker. Ele aplica o mesmo marcador a todos os pontos de dados.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]

plt.plot(x, y, marker='o')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Line plot with circle markers')
plt.show()

Usando uma String de Formato

Em vez de argumentos de palavra-chave separados, você pode combinar o estilo de linha, cor e marcador em uma única string de formato: '[color][marker][linestyle]'.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]

# Red circles connected by a dashed line
plt.plot(x, y, 'ro--')
plt.title('Format string: red circles, dashed line')
plt.show()

Componentes comuns de string de formato:

CorMarcadorEstilo de linha
'r' vermelho'o' círculo'-' sólido
'g' verde's' quadrado'--' tracejado
'b' azul'^' triângulo':' pontilhado
'k' preto'*' estrela'-.' traço-ponto
'm' magenta'+' cruz'None' sem linha

Personalizando a Aparência dos Marcadores

O Matplotlib disponibiliza quatro argumentos de palavra-chave para controle detalhado dos marcadores:

ParâmetroO que controla
markersize (ou ms)Diâmetro do marcador em pontos
markerfacecolor (ou mfc)Cor de preenchimento do marcador
markeredgecolor (ou mec)Cor da borda do marcador
markeredgewidth (ou mew)Largura da borda do marcador em pontos
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]

plt.plot(
    x, y,
    marker='o',
    markersize=12,
    markerfacecolor='gold',
    markeredgecolor='navy',
    markeredgewidth=2,
)
plt.title('Customized circle markers')
plt.show()

Marcadores Ocos

Defina markerfacecolor='none' (string em minúsculas) para desenhar apenas a borda, criando um marcador oco:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [3, 1, 4, 1, 5]

plt.plot(x, y, marker='s', markersize=14, markerfacecolor='none', markeredgecolor='steelblue', markeredgewidth=2)
plt.title('Hollow square markers')
plt.show()

Estilo de Preenchimento

O parâmetro fillstyle controla qual parte do marcador é preenchida. Os valores válidos são 'full', 'left', 'right', 'bottom', 'top' e 'none'.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 3, 5, 1]

plt.plot(x, y, marker='o', markersize=16, fillstyle='left', markerfacecolor='crimson', markeredgecolor='black')
plt.title('Half-filled circle markers (fillstyle="left")')
plt.show()

Controle de Marcadores por Ponto com scatter()

plot() aplica um marcador uniforme a toda a linha. Quando cada ponto precisa ter um tamanho ou cor diferente — por exemplo, para codificar uma terceira variável — use scatter().

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]
sizes  = [40, 100, 200, 80, 160]   # area in points²
colors = [0.2, 0.5, 0.8, 0.3, 0.9]  # mapped through colormap

sc = plt.scatter(x, y, s=sizes, c=colors, cmap='plasma', edgecolors='black')
plt.colorbar(sc, label='Value')
plt.title('Per-point size and color with scatter()')
plt.show()

Principais diferenças entre plot() e scatter() para marcadores:

Recursoplot()scatter()
Forma do marcadorIgual para todos os pontosIgual para todos os pontos
Tamanho do marcadorUniformePor ponto (array s)
Cor do marcadorUniformePor ponto (array c + mapa de cores)
Desempenho em grandes conjuntos de dadosMais rápidoMais lento

Múltiplas Séries de Dados com Marcadores Diferentes

Use chamadas plot() separadas para atribuir um marcador distinto a cada série e adicione uma legenda:

import matplotlib.pyplot as plt

months = [1, 2, 3, 4, 5, 6]
product_a = [120, 135, 110, 150, 140, 160]
product_b = [80,  95, 100,  90, 115, 130]
product_c = [60,  70,  65,  85,  90,  95]

plt.plot(months, product_a, marker='o', label='Product A')
plt.plot(months, product_b, marker='s', label='Product B')
plt.plot(months, product_c, marker='^', label='Product C')

plt.xlabel('Month')
plt.ylabel('Units sold')
plt.title('Monthly sales by product')
plt.legend()
plt.show()

Marcadores Sem Linha de Conexão

Passando linestyle='None' (ou ls='None') remove a linha e deixa apenas os marcadores — efetivamente um gráfico de dispersão usando plot().

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7, 8]
y = [3, 1, 4, 1, 5, 9, 2, 6]

plt.plot(x, y, marker='D', linestyle='None', color='darkorange', markersize=10)
plt.title('Diamond markers, no line')
plt.show()

Esse padrão é útil quando a ordem dos pontos de dados importa (preservando a ordenação original de x), mas você não quer uma linha sugerindo uma tendência contínua.

Dicas Práticas

  • Combine o marcador com a densidade dos dados. Use marcadores pequenos ('.' ou ',') ao plotar milhares de pontos; formas maiores ('o', 's') para um conjunto pequeno de medições.
  • Garanta contraste. Em fundos brancos, um markeredgecolor escuro sobre um markerfacecolor claro mantém cada ponto visível mesmo em tamanhos pequenos.
  • Evite sobrecarregar um único gráfico. Mais de cinco formas de marcadores distintas em um gráfico dificulta a leitura da legenda — considere usar subgráficos ou apenas cores.
  • Use scatter() para codificar uma terceira variável. Arrays de tamanho ou cor mapeados a um mapa de cores comunicam uma dimensão adicional sem adicionar mais séries à legenda.

Tópicos Relacionados

Was this page helpful?