Observação
Clique aqui para baixar o código de exemplo completo
Demonstração Markevery #
A markevery
propriedade Line2D
permite desenhar marcadores em um subconjunto de pontos de dados.
A lista de parâmetros possíveis é especificada em Line2D.set_markevery
. Resumidamente:
Um único inteiro N desenha cada N-ésimo marcador.
Uma tupla de inteiros (start, N) desenha cada N-ésimo marcador, começando no data index start .
Uma lista de inteiros desenha os marcadores nos índices especificados.
Uma fatia desenha os marcadores nos índices fatiados.
Um float especifica a distância entre os marcadores como uma fração da diagonal dos eixos no espaço da tela. Isso levará a uma distribuição visualmente uniforme dos pontos ao longo da linha, independentemente de escalas e zoom.
markevery com escalas lineares #
markevery com escalas de log #
Observe que a escala de log causa uma assimetria visual na distância do marcador ao subamostrar os dados usando um número inteiro. Em contraste, a subamostragem na fração do tamanho da figura cria distribuições uniformes, porque é baseada em frações da diagonal dos eixos, não em coordenadas de dados ou índices de dados.
fig, axs = plt.subplots(3, 3, figsize=(10, 6), constrained_layout=True)
for ax, markevery in zip(axs.flat, cases):
ax.set_title(f'markevery={markevery}')
ax.set_xscale('log')
ax.set_yscale('log')
ax.plot(x, y, 'o', ls='-', ms=4, markevery=markevery)
markevery em parcelas ampliadas #
As especificações de marcações baseadas em números inteiros selecionam pontos dos dados subjacentes e são independentes na exibição. Por outro lado, as especificações baseadas em flutuação estão relacionadas à diagonal dos eixos. Embora o zoom não altere a diagonal dos eixos, ele altera o intervalo de dados exibido e mais pontos serão exibidos ao aplicar zoom.
fig, axs = plt.subplots(3, 3, figsize=(10, 6), constrained_layout=True)
for ax, markevery in zip(axs.flat, cases):
ax.set_title(f'markevery={markevery}')
ax.plot(x, y, 'o', ls='-', ms=4, markevery=markevery)
ax.set_xlim((6, 6.7))
ax.set_ylim((1.1, 1.7))
markevery em gráficos polares #
r = np.linspace(0, 3.0, 200)
theta = 2 * np.pi * r
fig, axs = plt.subplots(3, 3, figsize=(10, 6), constrained_layout=True,
subplot_kw={'projection': 'polar'})
for ax, markevery in zip(axs.flat, cases):
ax.set_title(f'markevery={markevery}')
ax.plot(theta, r, 'o', ls='-', ms=4, markevery=markevery)
plt.show()
Tempo total de execução do script: ( 0 minutos 10,927 segundos)