Hinweis
Zum Ende springen, um den vollständigen Beispielcode herunterzuladen.
Markevery Demo#
Die Eigenschaft markevery von Line2D ermöglicht das Zeichnen von Markern an einer Teilmenge von Datenpunkten.
Die Liste möglicher Parameter ist unter Line2D.set_markevery spezifiziert. Kurz gesagt:
Eine einzelne Ganzzahl N zeichnet jeden N-ten Marker.
Ein Tupel von Ganzzahlen (start, N) zeichnet jeden N-ten Marker, beginnend bei Index start.
Eine Liste von Ganzzahlen zeichnet die Marker an den angegebenen Indizes.
Ein Slice zeichnet die Marker an den gesliceten Indizes.
Eine Gleitkommazahl spezifiziert den Abstand zwischen den Markern als Bruchteil der Achsendiagonale im Bildschirmraum. Dies führt zu einer visuell gleichmäßigen Verteilung der Punkte entlang der Linie, unabhängig von Skalen und Zoom.
markevery mit linearen Skalen#
![markevery=None, markevery=8, markevery=(30, 8), markevery=[16, 24, 32], markevery=[0, -1], markevery=slice(100, 200, 3), markevery=0.1, markevery=0.4, markevery=(0.2, 0.4)](../../_images/sphx_glr_markevery_demo_001.png)
markevery mit logarithmischen Skalen#
Beachten Sie, dass die logarithmische Skala eine visuelle Asymmetrie im Markerabstand verursacht, wenn die Daten mit einer Ganzzahl untersampelt werden. Im Gegensatz dazu erzeugt die Untersampelung basierend auf einem Bruchteil der Figurengröße gleichmäßige Verteilungen, da sie auf Bruchteilen der Achsendiagonale basiert und nicht auf Datenkoordinaten oder Datenindizes.
fig, axs = plt.subplots(3, 3, figsize=(10, 6), layout='constrained')
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=None, markevery=8, markevery=(30, 8), markevery=[16, 24, 32], markevery=[0, -1], markevery=slice(100, 200, 3), markevery=0.1, markevery=0.4, markevery=(0.2, 0.4)](../../_images/sphx_glr_markevery_demo_002.png)
markevery bei gezoomten Plots#
Ganzzahlbasierte markevery-Spezifikationen wählen Punkte aus den zugrundeliegenden Daten aus und sind unabhängig von der Ansicht. Im Gegensatz dazu beziehen sich gleitkommazahlbasierte Spezifikationen auf die Achsendiagonale. Während das Zoomen die Achsendiagonale nicht verändert, verändert es den angezeigten Datenbereich, und mehr Punkte werden beim Zoomen angezeigt.
fig, axs = plt.subplots(3, 3, figsize=(10, 6), layout='constrained')
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=None, markevery=8, markevery=(30, 8), markevery=[16, 24, 32], markevery=[0, -1], markevery=slice(100, 200, 3), markevery=0.1, markevery=0.4, markevery=(0.2, 0.4)](../../_images/sphx_glr_markevery_demo_003.png)
markevery auf Polarkoordinaten-Plots#
r = np.linspace(0, 3.0, 200)
theta = 2 * np.pi * r
fig, axs = plt.subplots(3, 3, figsize=(10, 6), layout='constrained',
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()
Gesamtlaufzeit des Skripts: (0 Minuten 12,375 Sekunden)