Nota
Haga clic aquí para descargar el código de ejemplo completo
Demostración Markevery #
La markevery
propiedad de Line2D
permite dibujar marcadores en un subconjunto de puntos de datos.
La lista de posibles parámetros se especifica en Line2D.set_markevery
. En breve:
Un solo entero N dibuja cada N-ésimo marcador.
Una tupla de enteros (inicio, N) dibuja cada N-ésimo marcador, comenzando en el inicio del índice de datos .
Una lista de enteros dibuja los marcadores en los índices especificados.
Un corte dibuja los marcadores en los índices cortados.
Un flotante especifica la distancia entre los marcadores como una fracción de la diagonal de los ejes en el espacio de la pantalla. Esto conducirá a una distribución visualmente uniforme de los puntos a lo largo de la línea, independientemente de las escalas y el zoom.
markevery con escalas lineales #
markevery con escalas logarítmicas #
Tenga en cuenta que la escala logarítmica provoca una asimetría visual en la distancia del marcador cuando se submuestrean los datos con un número entero. Por el contrario, el submuestreo en fracciones del tamaño de la figura crea distribuciones uniformes, porque se basa en fracciones de la diagonal de los ejes, no en coordenadas de datos o índices de datos.
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 en parcelas ampliadas #
Las especificaciones markevery basadas en enteros seleccionan puntos de los datos subyacentes y son independientes de la vista. Por el contrario, las especificaciones basadas en flotantes están relacionadas con la diagonal de los ejes. Si bien el zoom no cambia la diagonal de los ejes, cambia el rango de datos mostrado y se mostrarán más puntos al hacer 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 en parcelas 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()
Tiempo total de ejecución del script: (0 minutos 10,927 segundos)