Hinweis
Zum Ende springen, um den vollständigen Beispielcode herunterzuladen.
Linestyles#
Einfache Linienstile können mit den Zeichenketten "solid", "dotted", "dashed" oder "dashdot" definiert werden. Eine verfeinerte Kontrolle kann durch Angabe eines Strich-Tupels (offset, (on_off_seq)) erreicht werden. Zum Beispiel bedeutet (0, (3, 10, 1, 15)) (3pt Linie, 10pt Abstand, 1pt Linie, 15pt Abstand) ohne Versatz, während (5, (10, 3)) (10pt Linie, 3pt Abstand) bedeutet, aber die ersten 5pt Linie überspringt. Siehe auch Line2D.set_linestyle. Die spezifischen Ein/Aus-Sequenzen der Stile "dotted", "dashed" und "dashdot" sind konfigurierbar
rcParams["lines.dotted_pattern"](Standard:[1.0, 1.65])rcParams["lines.dashed_pattern"](Standard:[3.7, 1.6])rcParams["lines.dashdot_pattern"](Standard:[6.4, 1.6, 1.0, 1.6])
Hinweis: Der Strichstil kann auch über Line2D.set_dashes konfiguriert werden, wie in Konfiguration des gestrichelten Linienstils gezeigt und durch Übergabe einer Liste von Strichsequenzen mit dem Schlüsselwort dashes an den Cycler in property_cycle.
import matplotlib.pyplot as plt
import numpy as np
linestyle_str = [
('solid', 'solid'), # Same as (0, ()) or '-'
('dotted', 'dotted'), # Same as ':'
('dashed', 'dashed'), # Same as '--'
('dashdot', 'dashdot')] # Same as '-.'
linestyle_tuple = [
('loosely dotted', (0, (1, 10))),
('dotted', (0, (1, 5))),
('densely dotted', (0, (1, 1))),
('long dash with offset', (5, (10, 3))),
('loosely dashed', (0, (5, 10))),
('dashed', (0, (5, 5))),
('densely dashed', (0, (5, 1))),
('loosely dashdotted', (0, (3, 10, 1, 10))),
('dashdotted', (0, (3, 5, 1, 5))),
('densely dashdotted', (0, (3, 1, 1, 1))),
('dashdotdotted', (0, (3, 5, 1, 5, 1, 5))),
('loosely dashdotdotted', (0, (3, 10, 1, 10, 1, 10))),
('densely dashdotdotted', (0, (3, 1, 1, 1, 1, 1)))]
def plot_linestyles(ax, linestyles, title):
X, Y = np.linspace(0, 100, 10), np.zeros(10)
yticklabels = []
for i, (name, linestyle) in enumerate(linestyles):
ax.plot(X, Y+i, linestyle=linestyle, linewidth=1.5, color='black')
yticklabels.append(name)
ax.set_title(title)
ax.set(ylim=(-0.5, len(linestyles)-0.5),
yticks=np.arange(len(linestyles)),
yticklabels=yticklabels)
ax.tick_params(left=False, bottom=False, labelbottom=False)
ax.spines[:].set_visible(False)
# For each line style, add a text annotation with a small offset from
# the reference point (0 in Axes coords, y tick value in Data coords).
for i, (name, linestyle) in enumerate(linestyles):
ax.annotate(repr(linestyle),
xy=(0.0, i), xycoords=ax.get_yaxis_transform(),
xytext=(-6, -12), textcoords='offset points',
color="blue", fontsize=8, ha="right", family="monospace")
fig, (ax0, ax1) = plt.subplots(2, 1, figsize=(7, 8), height_ratios=[1, 3],
layout='constrained')
plot_linestyles(ax0, linestyle_str[::-1], title='Named linestyles')
plot_linestyles(ax1, linestyle_tuple[::-1], title='Parametrized linestyles')
plt.show()
Gesamtlaufzeit des Skripts: (0 Minuten 1,864 Sekunden)