TickedStroke patheffect#

Matplotlibs patheffects können verwendet werden, um zu ändern, wie Pfade auf einer so niedrigen Ebene gezeichnet werden, dass sie fast alles beeinflussen können.

Der Patheffects-Leitfaden beschreibt die Verwendung von Patheffects.

Der hier illustrierte TickedStroke Patheffekt zeichnet einen Pfad mit einem gestrichelten Stil. Der Abstand, die Länge und der Winkel der Striche können gesteuert werden.

Siehe auch das Beispiel Linien mit einem gestrichelten Patheffekt.

Siehe auch das Beispiel Konturierung des Lösungsraums von Optimierungen.

import matplotlib.pyplot as plt
import numpy as np

TickedStroke auf Pfade anwenden#

import matplotlib.patches as patches
from matplotlib.path import Path
import matplotlib.patheffects as patheffects

fig, ax = plt.subplots(figsize=(6, 6))
path = Path.unit_circle()
patch = patches.PathPatch(path, facecolor='none', lw=2, path_effects=[
    patheffects.withTickedStroke(angle=-90, spacing=10, length=1)])

ax.add_patch(patch)
ax.axis('equal')
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)

plt.show()
tickedstroke demo

TickedStroke auf Linien anwenden#

fig, ax = plt.subplots(figsize=(6, 6))
ax.plot([0, 1], [0, 1], label="Line",
        path_effects=[patheffects.withTickedStroke(spacing=7, angle=135)])

nx = 101
x = np.linspace(0.0, 1.0, nx)
y = 0.3*np.sin(x*8) + 0.4
ax.plot(x, y, label="Curve", path_effects=[patheffects.withTickedStroke()])

ax.legend()

plt.show()
tickedstroke demo

TickedStroke auf Konturdiagramme anwenden#

Konturdiagramm mit Ziel- und Nebenbedingungen. Kurven, die durch Konturen zur Darstellung einer typischen Nebenbedingung in einem Optimierungsproblem generiert werden, sollten mit Winkeln zwischen Null und 180 Grad gezeichnet werden.

fig, ax = plt.subplots(figsize=(6, 6))

nx = 101
ny = 105

# Set up survey vectors
xvec = np.linspace(0.001, 4.0, nx)
yvec = np.linspace(0.001, 4.0, ny)

# Set up survey matrices.  Design disk loading and gear ratio.
x1, x2 = np.meshgrid(xvec, yvec)

# Evaluate some stuff to plot
obj = x1**2 + x2**2 - 2*x1 - 2*x2 + 2
g1 = -(3*x1 + x2 - 5.5)
g2 = -(x1 + 2*x2 - 4.5)
g3 = 0.8 + x1**-3 - x2

cntr = ax.contour(x1, x2, obj, [0.01, 0.1, 0.5, 1, 2, 4, 8, 16],
                  colors='black')
ax.clabel(cntr, fmt="%2.1f", use_clabeltext=True)

cg1 = ax.contour(x1, x2, g1, [0], colors='sandybrown')
cg1.set(path_effects=[patheffects.withTickedStroke(angle=135)])

cg2 = ax.contour(x1, x2, g2, [0], colors='orangered')
cg2.set(path_effects=[patheffects.withTickedStroke(angle=60, length=2)])

cg3 = ax.contour(x1, x2, g3, [0], colors='mediumblue')
cg3.set(path_effects=[patheffects.withTickedStroke(spacing=7)])

ax.set_xlim(0, 4)
ax.set_ylim(0, 4)

plt.show()
tickedstroke demo

Richtung/Seite der Striche#

Um die Seite der Linie zu ändern, auf der die Striche gezeichnet werden, ändern Sie das Vorzeichen des Winkels.

fig, ax = plt.subplots(figsize=(6, 6))
line_x = line_y = [0, 1]
ax.plot(line_x, line_y, label="Line",
        path_effects=[patheffects.withTickedStroke(spacing=7, angle=135)])

ax.plot(line_x, line_y, label="Opposite side",
        path_effects=[patheffects.withTickedStroke(spacing=7, angle=-135)])

ax.legend()
plt.show()
tickedstroke demo

Gesamtlaufzeit des Skripts: (0 Minuten 2,049 Sekunden)

Galerie generiert von Sphinx-Gallery