Matplotlib-Werkzeuge und interaktive Funktionen


Matplotlib 参考文档Matplotlib-Referenzdokumentation

Diese Funktionsgruppe bietet Ereignisbehandlung, Eigenschaftsoperationen, Mausinteraktion und Debugging-Werkzeuge.

Funktionsübersicht

FunktionBeschreibung
connect()Ereignis-Callback-Funktion binden
disconnect()Ereignis-Callback-Funktion entbinden
ginput()Koordinaten per Mausklick abrufen
waitforbuttonpress()Auf Maus- oder Tastendruck warten
findobj()Artist anhand übereinstimmender Bedingungen finden
get() / setp()Artist-Eigenschaften abrufen/setzen
getp()Artist-Eigenschaften abrufen (Alias für get)
get_current_fig_manager()Aktuellen Figure-Manager abrufen
new_figure_manager()Einen Manager für Figure erstellen
set_loglevel()Log-Level festlegen
xkcd()Zum handgezeichneten xkcd-Comicstil wechseln

Ereignisbehandlung - connect() / disconnect()

matplotlib.pyplot.connect(s, func)
matplotlib.pyplot.disconnect(cid)

Beispiel

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(np.random.randn(50).cumsum())
ax.set_title('Klicken Sie irgendwo auf die Abbildung')

# Klickereignis-Callback
def on_click(event):
    print(f'Geklickt bei: x={event.xdata:.2f}, y={event.ydata:.2f}')

# Ereignis binden
cid = fig.canvas.mpl_connect('button_press_event', on_click)

plt.show()
print("Beispiel: Klickereignisse registriert")

ginput() - Mauskoordinaten-Auswahl

matplotlib.pyplot.ginput(n=1, timeout=30, show_clicks=True,
    mouse_add=MouseButton.LEFT, mouse_pop=MouseButton.RIGHT,
    mouse_stop=MouseButton.MIDDLE)

Beispiel

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(7, 5))
ax.plot(np.arange(10), np.random.randn(10), 'o-')
ax.set_title('3 Punkte anklicken (timeout=15s)')
ax.set_xlim(-1, 10)
ax.set_ylim(-3, 3)
ax.grid(True, alpha=0.3)

print("Bitte klicken Sie 3 Punkte an...")
points = plt.ginput(3, timeout=15, show_clicks=True)

for i, (x, y) in enumerate(points):
    print(f"Punkt {i+1}: ({x:.2f}, {y:.2f})")

plt.show()

waitforbuttonpress() - Auf Tastendruck warten

matplotlib.pyplot.waitforbuttonpress(timeout=-1)

Rückgabewert: True bedeutet, dass eine Taste gedrückt wurde, False bedeutet, dass eine Maustaste gedrückt wurde.

Beispiel

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.plot(np.sin(np.linspace(0, 10, 100)))
ax.set_title('Beliebige Taste drücken oder mit der Maus klicken')

print("Warte auf Tastendruck...")
result = plt.waitforbuttonpress(timeout=10)
if result is None:
    print("Zeitüberschreitung!")
elif result:
    print("Taste wurde gedrückt")
else:
    print("Maus wurde geklickt")

plt.show()

findobj() - Artist finden

matplotlib.pyplot.findobj(o=None, match=None, include_self=False)

Beispiel

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.lines import Line2D

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6], label='Linie A')
ax.plot([1, 2, 3], [1, 2, 3], label='Linie B')
ax.set_title('Demo: Objekte finden')

# Alle Line2D-Objekte finden
lines = ax.findobj(match=Line2D)
print(f"{len(lines)} Linienobjekte gefunden")

# Bestimmte Eigenschaften abrufen
for line in lines:
    print(f" - Label: {line.get_label()}")

# Verwende get(), um Eigenschaften abzurufen
ax_title = ax.get_title()
print(f"Achsen-Titel: {ax_title}")

plt.show()
Found 2 line objects
  - label: Line A
  - label: Line B
Axes title: Find Objects Demo

get() / setp() - Eigenschaftsoperationen

matplotlib.pyplot.get(obj, *args, **kwargs)
matplotlib.pyplot.setp(obj, *args, **kwargs)
matplotlib.pyplot.getp(obj, *args, **kwargs)

Beispiel

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(layout='constrained')
line, = ax.plot([0, 1], [0, 1], label='test')

# get() ruft eine einzelne Eigenschaft ab
print("Linienfarbe:", plt.get(line, 'color'))

# getp() ruft mehrere Eigenschaften ab
props = plt.getp(line)
print(f"Linie hat {len(props)} Eigenschaften")

# setp() setzt mehrere Eigenschaften auf einmal
plt.setp(line, color='red', linewidth=3, linestyle='--')

ax.set_title('setp() demo')
ax.legend()
plt.show()
print("Beispiel: Eigenschaften über setp() geändert")

xkcd() - Handgezeichneter Comic-Stil

matplotlib.pyplot.xkcd(scale=1, length=100, randomness=2)

Beispiel

import matplotlib.pyplot as plt
import numpy as np

# Handgezeichneten xkcd-Stil aktivieren
with plt.xkcd():
    fig, ax = plt.subplots(figsize=(8, 5))
    x = np.linspace(0, 10, 100)
    ax.plot(x, np.sin(x), label='sin(x)')
    ax.plot(x, np.cos(x), label='cos(x)')
    ax.set_title('XKCD-Stil-Diagramm')
    ax.set_xlabel('Zeit')
    ax.set_ylabel('Amplitude')
    ax.legend()
    ax.annotate('Das ist der Höhepunkt!',
                xy=(np.pi/2, 1), xytext=(2, 1.3),
                arrowprops=dict(arrowstyle='->'))
    plt.show()
    print("Beispiel: xkcd-Stil angezeigt")

set_loglevel() - Log-Level

matplotlib.pyplot.set_loglevel(level)

Level-Optionen: 'debug', 'info', 'warning', 'error', 'critical'.

Beispiel

import matplotlib.pyplot as plt
import numpy as np

# Log-Level auf info setzen (Matplotlib-interne Informationen anzeigen)
plt.set_loglevel('info')

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])
ax.set_title('Debuggen mit loglevel')

plt.show()

Matplotlib 参考文档Matplotlib-Referenzdokumentation

Andere Erweiterungen