Zum Hauptinhalt springen
Strg+K
Matplotlib 3.10.3 documentation - Home
  • Plot-Typen
  • Benutzerhandbuch
  • Tutorials
  • Beispiele
  • Referenz
  • Beitragen
  • Releases
  • Gitter
  • Discourse
  • GitHub
  • Twitter
  • Plot-Typen
  • Benutzerhandbuch
  • Tutorials
  • Beispiele
  • Referenz
  • Beitragen
  • Releases
  • Gitter
  • Discourse
  • GitHub
  • Twitter

Abschnittsnavigation

  • Linien, Balken und Markierungen
    • Unendliche Linien
    • Balkendiagramm mit einzelnen Balkenfarben
    • Balkendiagramm mit Beschriftungen
    • Gestapeltes Balkendiagramm
    • Gruppiertes Balkendiagramm mit Beschriftungen
    • Horizontales Balkendiagramm
    • Unterbrochene horizontale Balken
    • CapStyle
    • Darstellung kategorialer Variablen
    • Darstellung der Kohärenz zweier Signale
    • Kreuzspektraldichte (CSD)
    • Kurve mit Fehlerband
    • Auswahl der Fehlerbalkengrenze
    • Subsampling von Fehlerbalken
    • EventCollection Demo
    • Eventplot Demo
    • Gefülltes Polygon
    • fill_between mit Transparenz
    • Fülle den Bereich zwischen zwei Linien
    • Fülle den Bereich zwischen zwei vertikalen Linien
    • Balkendiagramm mit Farbverläufen
    • Hut-Graph
    • Diskrete Verteilung als horizontales Balkendiagramm
    • JoinStyle
    • Konfiguration von gestrichelten Linienstilen
    • Linien mit einem getickten Pfad-Effekt
    • Linienstile
    • Markierungsreferenz
    • Markevery Demo
    • Darstellung maskierter und NaN-Werte
    • Mehrfarbige Linien
    • Abbildung von Markereigenschaften auf multivariate Daten
    • Leistungsspektraldichte (PSD)
    • Scatter Demo2
    • Streudiagramm mit Histogrammen
    • Streudiagramm mit maskierten Werten
    • Marker-Beispiele
    • Streudiagramm mit Legende
    • Liniendiagramm
    • Bereiche schattieren, die durch eine logische Maske definiert sind, unter Verwendung von fill_between
    • Spektraldarstellungen
    • Stackplots und Streamgraphen
    • Stairs Demo
    • Stamm-Plot
    • Step Demo
    • Zeitleiste mit Linien, Daten und Text
    • hlines und vlines
    • Kreuz- und Autokorrelation
  • Bilder, Konturen und Felder
    • Affine Transformation eines Bildes
    • Windbarben
    • Barcode
    • Interaktive Anpassung des Farbskalenbereichs
    • Farbskalennormalisierungen
    • Farbskalennormalisierungen SymLogNorm
    • Kontureckenmaske
    • Kontur Demo
    • Konturbild
    • Konturbeschriftungs-Demo
    • Konturfüllungs-Demo
    • Konturfüllung mit Schraffur
    • Konturfüllung und logarithmische Farbskala
    • Konturierung der Lösungsräume von Optimierungen
    • BboxImage Demo
    • Figimage Demo
    • Annotierte Heatmap
    • Bild-Resampling
    • Bilder mit Patches beschneiden
    • Viele Möglichkeiten, Bilder darzustellen
    • Bild mit maskierten Werten
    • Nicht-uniformes Bild
    • Transparenz mit Farbe in 2D-Bildern mischen
    • Modifizierung des Koordinatenformats
    • Interpolationen für imshow
    • Konturplot von unregelmäßig verteilten Daten
    • Bilder überlagern mit Alpha-Blending
    • Matrizen mit matshow visualisieren
    • Mehrere Bilder mit einer Farbleiste
    • pcolor-Bilder
    • pcolormesh-Gitternetze und Schattierung
    • pcolormesh
    • Streamplot
    • QuadMesh Demo
    • Fortgeschrittene Quiver- und Quiverkey-Funktionen
    • Quiver Simple Demo
    • Schattierungsbeispiel
    • Spektrogramm
    • Spy Demos
    • Tricontour Demo
    • Tricontour Smooth Delaunay
    • Tricontour Smooth User
    • Trigradient Demo
    • Triinterp Demo
    • Tripcolor Demo
    • Triplot Demo
    • Wasserzeichenbild
  • Subplots, Achsen und Figuren
    • Beschriftungen und Titel ausrichten
    • Subplot-Anpassung programmatisch steuern
    • Achsen-Box-Seitenverhältnis
    • Achsen Demo
    • Ansichtsgrenzen mit Rändern und sticky_edges steuern
    • Achsen-Eigenschaften
    • Achsen-Zoom-Effekt
    • Bereiche zeichnen, die eine Achse überspannen
    • Gleiches Achsen-Seitenverhältnis
    • Position der Achsenbeschriftung
    • Unterbrochene Achse
    • Benutzerdefinierte Figure-Unterklassen
    • Achsen mit angepasstem Layout skalieren
    • Achsen mit engem Layout skalieren
    • Unterschiedliche Skalen auf derselben Achse
    • Figurgröße in verschiedenen Einheiten
    • Figuren-Beschriftungen: suptitle, supxlabel, supylabel
    • Benachbarte Subplots
    • Geografische Projektionen
    • Zwei Subplots mit subplots und GridSpec kombinieren
    • GridSpec mit variablen Größen und Abständen
    • Gridspec für Subplot-Layouts mit mehreren Spalten/Zeilen
    • Verschachtelte Gridspecs
    • Invertierte Achse
    • Mehrere Figuren in pyplot verwalten
    • Sekundäre Achse
    • Achsen-Limits und Ansichten teilen
    • Gemeinsame Achse
    • Figuren-Subfiguren
    • Mehrere Subplots
    • subplot2grid
    • Abstände und Ränder von Subplots
    • Mehrere Subplots mit plt.subplots erstellen
    • Diagramme mit unterschiedlichen Skalen
    • Zoom-Bereich in der Achsen-Inset
  • Statistik
    • Künstler-Anpassung in Boxplots
    • Boxplots mit benutzerdefinierten Füllfarben
    • Boxplots
    • Vergleich von Boxplot und Violinplot
    • Getrennte Berechnung und Darstellung von Boxplots
    • Darstellung einer Konfidenzellipse eines zweidimensionalen Datensatzes
    • Violinplot-Anpassung
    • Errorbar-Funktion
    • Verschiedene Arten der Fehlerbalkenspezifikation
    • Einbeziehung von Ober- und Untergrenzen in Fehlerbalken
    • Erstellung von Boxen aus Fehlerbalken mit PatchCollection
    • Hexagonales biniertes Diagramm
    • Histogramme
    • Bihistogramm
    • Kumulative Verteilungen
    • Demo der verschiedenen histtype-Einstellungen der Histogrammfunktion
    • Die Histogrammfunktion (hist) mit mehreren Datensätzen
    • Histogramm-Bins, Dichte und Gewicht
    • Mehrere Histogramme nebeneinander
    • Zeitreihen-Histogramm
    • Grundlagen des Violinplots
  • Kreis- und Polardiagramme
    • Kreisdiagramme
    • Balken eines Kreises
    • Verschachtelte Kreisdiagramme
    • Ein Kreis und ein Donut mit Beschriftungen
    • Balkendiagramm auf Polarachse
    • Polarplot
    • Fehlerbalkenanzeige auf Polarachse
    • Polar-Legende
    • Streudiagramm auf Polarachse
  • Text, Beschriftungen und Annotationen
    • Akzentuierter Text
    • Y-Achsenbeschriftungen ausrichten
    • Skaleninvariante Winkelbeschriftung
    • Winkelannotationen auf Klammerpfeilen
    • Annotationstransformation
    • Ein Diagramm annotieren
    • Diagramme annotieren
    • Polar-Diagramme annotieren
    • Pfeil Demo
    • Text automatisch umbrechen
    • Benutzerdefinierte Legenden erstellen
    • Datums-Tick-Beschriftungen
    • AnnotationBbox Demo
    • Text als Pfad verwenden
    • Textrotationsmodus
    • Der Unterschied zwischen \dfrac und \frac
    • Ticks mit Ingenieurnotation formatieren
    • Referenz für Pfeilstil von Annotationen
    • Textfelder gestalten
    • Figuren-Legenden-Demo
    • Schriftfamilie konfigurieren
    • Verwendung von TTF-Schriftdateien
    • Schriftartentabelle
    • Schriftartendemo (objektorientierter Stil)
    • Schriftartendemo (Schlüsselwortargumente)
    • Subplots beschriften
    • Legende mit vordefinierten Beschriftungen
    • Legenden-Demo
    • Künstler innerhalb eines Künstlers
    • Texte in Bilder umwandeln
    • Mathtext
    • Mathematische Ausdrücke
    • Mathe-Schriftfamilie
    • Mehrzeilig
    • Textfelder platzieren
    • Textobjekte mit unterschiedlichen Eigenschaften verketten
    • STIX-Schriften
    • Mathematische Ausdrücke mit TeX rendern
    • Textausrichtung
    • Texteigenschaften
    • Stil von Text und Beschriftungen mit einem Wörterbuch steuern
    • Textrotation Winkel in Datenkoordinaten
    • Titelpositionierung
    • Unicode-Minus
    • Grundlinie für Usetex-Text
    • Usetex-Schrift-Effekte
    • Text-Wasserzeichen
  • Farbe
    • Farb-Demo
    • Nach y-Wert färben
    • Farben im Standard-Eigenschaftskreislauf
    • Benannte Farbschemata
    • Farbleiste
    • Farbskalen-Referenz
    • Eine Farbskala aus einer Liste von Farben erstellen
    • Einzelne Farben aus einer Farbskala auswählen
    • Liste benannter Farben
    • Möglichkeiten, den Alpha-Wert einer Farbe einzustellen
  • Formen und Sammlungen
    • Pfeilführer
    • Referenz für Matplotlib-Künstler
    • Linien-, Poly- und RegularPoly-Sammlung mit Autoskalierung
    • Zusammengesetzter Pfad
    • Delfine
    • Mmh Donuts!!!
    • Ellipse mit Ausrichtungspfeil-Demo
    • Ellipse-Sammlung
    • Ellipse Demo
    • Zeichnen von schicken Boxen
    • Hatch-Demo
    • Schraffur-Stilreferenz
    • Mehrere Linien mit einer LineCollection darstellen
    • Kreise, Keile und Polygone
    • PathPatch-Objekt
    • Bézier-Kurve
    • Streudiagramm
  • Stilvorlagen
    • Bayesian Methods for Hackers Stilvorlage
    • Stilvorlage mit dunklem Hintergrund
    • FiveThirtyEight Stilvorlage
    • ggplot Stilvorlage
    • Graustufen-Stilvorlage
    • Petroff10 Stilvorlage
    • Solarized Light Stilvorlage
    • Stilvorlagen-Referenz
  • Modul — pyplot
    • Einfacher Plot
    • Text und Mathtext mit pyplot
    • Mehrere Linien mit pyplot
    • Zwei Subplots mit pyplot
  • Modul — axes_grid1
    • Verankerter Richtungspfeil
    • Achsen-Teiler
    • Achsenraster-Demo
    • Achsenraster2
    • HBoxDivider und VBoxDivider Demo
    • RGB-Kanäle mit RGBAxes anzeigen
    • Farbleiste mit Achsen-Teiler
    • Position und Größe einer Farbleiste mit Inset Axes steuern
    • Farbleisten pro Zeile oder Spalte
    • Achsen mit fester physischer Größe
    • ImageGrid-Zellen mit festem Seitenverhältnis
    • Inset Locator Demo
    • Inset Locator Demo 2
    • Platz für Y-Achsenbeschriftung mit axes_grid schaffen
    • Parasite Simple
    • Parasite Simple2
    • Histogramm an Streudiagramm ausrichten mit locatable Axes
    • Einfache verankerte Künstler
    • Einfacher Achsen-Teiler 1
    • Einfacher Achsen-Teiler 3
    • Einfaches ImageGrid
    • Einfaches ImageGrid 2
    • Einfache Achsenlinie4
  • Modul — axisartist
    • Achsenrichtung
    • axis_direction Demo
    • Achsenlinien-Stile
    • Kruimliengitter-Demo
    • Demo CurveLinear Grid2
    • Features von floating_axes
    • floating_axis Demo
    • Parasite Achsen-Demo
    • Parasite Achsen-Demo
    • Ticklabel-Ausrichtung
    • Ticklabel-Richtung
    • Einfache Achsenrichtung
    • Einfache Achsen-Tick-Beschriftung und Tick-Richtungen
    • Einfacher Achsen-Pad
    • Benutzerdefinierte Spines mit axisartist
    • Einfache Achsenlinie
    • Einfache Achsenlinie3
  • Showcase
    • Anatomie einer Figur
    • Firefox
    • Integral als Fläche unter einer Kurve
    • Beschattierte & Leistungsnormalisierte Darstellung
    • Pan/Zoom-Ereignisse überlappender Achsen
    • Aktienkurse über 32 Jahre
    • XKCD
  • Animation
    • Zerfall
    • Animiertes Histogramm
    • pyplot Animation
    • Die Bayes-Aktualisierung
    • Das Problem des doppelten Pendels
    • Animiertes Bild mit einer vorkompilierten Bildliste
    • Frame-Erfassung
    • Animation mehrerer Achsen
    • Animation pausieren und fortsetzen
    • Regensimulation
    • Animierter 3D-Zufallspfad
    • Animiertes Liniendiagramm
    • Animiertes Streudiagramm als GIF gespeichert
    • Oszilloskop
    • Matplotlib entfesselt
  • Ereignisbehandlung
    • Schließen-Ereignis
    • Mausbewegungs- und Klickereignisse
    • Fadenkreuz-Cursor
    • Datenbrowser
    • Figuren/Achsen Enter- und Leave-Ereignisse
    • Interaktive Funktionen
    • Scroll-Ereignis
    • Tastendruck-Ereignis
    • Lasso Demo
    • Legenden-Picking
    • Lupe
    • Pfadeditor
    • Pick-Ereignis Demo
    • Pick-Ereignis Demo 2
    • Polygon-Editor
    • Pong
    • Daten-Resampling
    • Timer
    • Trifinder Event Demo
    • Viewlims
    • Zoom modifiziert andere Achsen
  • Sonstiges
    • Verankerte Künstler
    • Ermitteln, ob Künstler sich überschneiden
    • Manuelle Kontur
    • Koordinatenbericht
    • Benutzerdefinierte Projektion
    • Rc anpassen
    • AGG-Filter
    • Bandbox
    • Linien direkt zu einer Figur hinzufügen
    • Spiralfüllung
    • Findobj Demo
    • Schriftart-Indizierung
    • Schriftarteigenschaften
    • Histogramme mit Rechtecken und PolyCollections erstellen
    • Hyperlinks
    • Bild-Miniaturansicht
    • Darstellung mit Schlüsselwörtern
    • Matplotlib-Logo
    • Mehrseitige PDF
    • Multiprocessing
    • Gepacktes Blasendiagramm
    • Patheffect Demo
    • Bild auf Standardausgabe drucken
    • Rasterisierung für Vektorgrafiken
    • Eigenschaften setzen und abrufen
    • SVG-Filter auf eine Linie anwenden
    • SVG-Filter Kreis
    • Tabellen-Demo
    • TickedStroke Patheffect
    • transforms.offset_copy
    • Zorder Demo
  • 3D-Darstellung
    • 2D-Daten in 3D-Diagramm darstellen
    • Demo von 3D-Balkendiagrammen
    • Daten auf Achsen-Ansichtslimits beschneiden
    • 2D-Balkendiagramme in verschiedenen Ebenen erstellen
    • 3D-Box-Oberflächendiagramm
    • Kontur- (Level-) Kurven in 3D darstellen
    • Kontur- (Level-) Kurven in 3D mit der Option extend3d darstellen
    • Konturprofile auf ein Diagramm projizieren
    • Gefüllte Konturen
    • Gefüllte Kontur auf ein Diagramm projizieren
    • Benutzerdefinierte Hillshading in einem 3D-Oberflächendiagramm
    • 3D-Fehlerbalken
    • Zwischen 3D-Linien füllen
    • Unter 3D-Liniendiagrammen füllen
    • 3D-Histogramm von 2D-Daten erstellen
    • 2D-Bilder in 3D
    • Sich schneidende Ebenen
    • Parametrische Kurve
    • Lorenz-Attraktor
    • 2D- und 3D-Achsen in derselben Figur
    • Automatische Textverschiebung
    • Flache Objekte in 3D-Diagramm zeichnen
    • 3D-Polygone generieren
    • 3D-Diagramm-Projektionstypen
    • 3D-Quiver-Diagramm
    • 3D-Diagramm drehen
    • 3D-Streudiagramm
    • 3D-Stamm
    • 3D-Diagramme als Subplots
    • 3D-Oberfläche (Farbskala)
    • 3D-Oberfläche (Volltonfarbe)
    • 3D-Oberfläche (Karomuster)
    • 3D-Oberfläche mit Polarkoordinaten
    • Textannotationen in 3D
    • Dreieckiges 3D-Konturdiagramm
    • Dreieckiges 3D-Konturdiagramm mit Füllung
    • Dreieckige 3D-Oberflächen
    • Weitere dreieckige 3D-Oberflächen
    • Primäre 3D-Ansichtsebenen
    • 3D-Voxel / Volumetrisches Diagramm
    • 3D-Voxel-Diagramm des NumPy-Logos
    • 3D-Voxel / Volumetrisches Diagramm mit RGB-Farben
    • 3D-Voxel / Volumetrisches Diagramm mit zylindrischen Koordinaten
    • 3D-Drahtgitter-Diagramm
    • Animation eines 3D-Drahtgitter-Diagramms
    • 3D-Drahtgitter-Diagramme in einer Richtung
  • Skalen
    • Skalenübersicht
    • Asinh-Skala
    • Loglog-Seitenverhältnis
    • Benutzerdefinierte Skala
    • Log-Skala
    • Logit-Skala
    • Normalisierungen erforschen
    • Symlog-Skala
  • Spezialdiagramme
    • Hillshading
    • Anscombe's Quartett
    • Hinton-Diagramme
    • Ishikawa-Diagramm
    • Linksventrikuläres Bullseye
    • MRT mit EEG
    • Radardiagramm (auch Spinnen- oder Sternendiagramm genannt)
    • Die Sankey-Klasse
    • Lange Verbindungskette mit Sankey
    • Rankine-Kreisprozess
    • SkewT-LogP-Diagramm: Verwendung von Transformationen und benutzerdefinierten Projektionen
    • Topografisches Hillshading
  • Spines
    • Spines
    • Spine-Platzierung
    • Abgefallene Spines
    • Mehrere Y-Achsen mit Spines
    • Zentrierte Spines mit Pfeilen
  • Ticks
    • Automatische Einstellung der Tick-Positionen
    • Beschriftungen zwischen Ticks zentrieren
    • Farbleisten-Tick-Beschriftung
    • Benutzerdefinierter Ticker
    • Datums-Ticks mit ConciseDateFormatter formatieren
    • Datums-Demo-Konvertierung
    • Platzierung von Datums-Ticks nach Wiederholungsregeln
    • Datums-Tick-Lokalisierer und Formatierer
    • Benutzerdefinierter Tick-Formatierer für Zeitreihen
    • Datumspräzision und Epochen
    • Dollar-Ticks
    • SI-präfixierte Offsets und natürliche Größenordnungen
    • Einfache Anpassung von Fig-Achsen
    • Haupt- und Nebenticks
    • Mehrstufige (verschachtelte) Ticks
    • Der Standard-Tick-Formatierer
    • Tick-Formatierer
    • Tick-Lokalisierer
    • Standard-Y-Achsen-Tick-Beschriftungen rechts einstellen
    • Tick-Beschriftungen aus einer Werteliste einstellen
    • X-Achsen-Tick-Beschriftungen nach oben verschieben
    • Rotierte Tick-Beschriftungen
    • Zu viele Ticks beheben
  • Einheiten
    • Annotation mit Einheiten
    • Künstlertests
    • Balken-Demo mit Einheiten
    • Gruppenbalkendiagramm mit Einheiten
    • Grundeinheiten
    • Ellipse mit Einheiten
    • Evans-Test
    • Bogenmaß-Ticks
    • Zoll und Zentimeter
    • Einheitenbehandlung
  • Matplotlib in grafische Benutzeroberflächen einbetten
    • CanvasAgg Demo
    • Einbettung in GTK3 mit Navigationswerkzeugleiste
    • Einbettung in GTK3
    • Einbettung in GTK4 mit Navigationswerkzeugleiste
    • Einbettung in GTK4
    • Einbettung in Qt
    • Einbettung in Tk
    • Einbettung in wx #2
    • Einbettung in wx #3
    • Einbettung in wx #4
    • Einbettung in wx #5
    • WebAgg einbetten
    • Fourier Demo WX
    • GTK3 Tabellenkalkulation
    • GTK4 Tabellenkalkulation
    • Mathtext in WX anzeigen
    • Matplotlib mit Glade 3
    • mplcvd — ein Beispiel für einen Figure Hook
    • pyplot mit GTK3
    • pyplot mit GTK4
    • SVG-Histogramm
    • SVG-Tooltip
    • Tool-Manager
    • Einbettung in eine Webanwendung (Flask)
    • Cursor in WX hinzufügen
  • Widgets
    • Annotierter Cursor
    • Schaltflächen
    • Kontrollkästchen
    • Cursor
    • Lasso-Selektor
    • Menü
    • Mauscursor
    • Multicursor
    • Indizes aus einer Sammlung mit Polygon-Selektor auswählen
    • Polygon-Selektor
    • Radio-Schaltflächen
    • Bildskalierung mit einem RangeSlider
    • Rechteck- und Ellipsen-Selektoren
    • Schieberegler
    • Schieberegler auf diskrete Werte einrasten lassen
    • Span Selector
    • Textfeld
  • Userdemo
    • Verschachtelte Gridspecs
    • Einfache Legende01
    • Einfache Legende02
  • Beispiele
  • Widgets
  • Menü

Hinweis

Gehen Sie zum Ende, um den vollständigen Beispielcode herunterzuladen.

Menü#

Verwendung von Texten zur Erstellung eines einfachen Menüs.

menu
from dataclasses import dataclass

import matplotlib.pyplot as plt

import matplotlib.artist as artist
import matplotlib.patches as patches
from matplotlib.typing import ColorType


@dataclass
class ItemProperties:
    fontsize: float = 14
    labelcolor: ColorType = 'black'
    bgcolor: ColorType = 'yellow'
    alpha: float = 1.0


class MenuItem(artist.Artist):
    padx = 0.05  # inches
    pady = 0.05

    def __init__(self, fig, labelstr, props=None, hoverprops=None,
                 on_select=None):
        super().__init__()

        self.set_figure(fig)
        self.labelstr = labelstr

        self.props = props if props is not None else ItemProperties()
        self.hoverprops = (
            hoverprops if hoverprops is not None else ItemProperties())
        if self.props.fontsize != self.hoverprops.fontsize:
            raise NotImplementedError(
                'support for different font sizes not implemented')

        self.on_select = on_select

        # specify coordinates in inches.
        self.label = fig.text(0, 0, labelstr, transform=fig.dpi_scale_trans,
                              size=props.fontsize)
        self.text_bbox = self.label.get_window_extent(
            fig.canvas.get_renderer())
        self.text_bbox = fig.dpi_scale_trans.inverted().transform_bbox(self.text_bbox)

        self.rect = patches.Rectangle(
            (0, 0), 1, 1, transform=fig.dpi_scale_trans
        )  # Will be updated later.

        self.set_hover_props(False)

        fig.canvas.mpl_connect('button_release_event', self.check_select)

    def check_select(self, event):
        over, _ = self.rect.contains(event)
        if not over:
            return
        if self.on_select is not None:
            self.on_select(self)

    def set_extent(self, x, y, w, h, depth):
        self.rect.set(x=x, y=y, width=w, height=h)
        self.label.set(position=(x + self.padx, y + depth + self.pady / 2))
        self.hover = False

    def draw(self, renderer):
        self.rect.draw(renderer)
        self.label.draw(renderer)

    def set_hover_props(self, b):
        props = self.hoverprops if b else self.props
        self.label.set(color=props.labelcolor)
        self.rect.set(facecolor=props.bgcolor, alpha=props.alpha)

    def set_hover(self, event):
        """
        Update the hover status of event and return whether it was changed.
        """
        b, _ = self.rect.contains(event)
        changed = (b != self.hover)
        if changed:
            self.set_hover_props(b)
        self.hover = b
        return changed


class Menu:
    def __init__(self, fig, menuitems):
        self.figure = fig

        self.menuitems = menuitems

        maxw = max(item.text_bbox.width for item in menuitems)
        maxh = max(item.text_bbox.height for item in menuitems)
        depth = max(-item.text_bbox.y0 for item in menuitems)

        x0 = 1
        y0 = 4

        width = maxw + 2 * MenuItem.padx
        height = maxh + MenuItem.pady

        for item in menuitems:
            left = x0
            bottom = y0 - maxh - MenuItem.pady

            item.set_extent(left, bottom, width, height, depth)

            fig.artists.append(item)
            y0 -= maxh + MenuItem.pady

        fig.canvas.mpl_connect('motion_notify_event', self.on_move)

    def on_move(self, event):
        if any(item.set_hover(event) for item in self.menuitems):
            self.figure.canvas.draw()


fig = plt.figure()
fig.subplots_adjust(left=0.3)
props = ItemProperties(labelcolor='black', bgcolor='yellow',
                       fontsize=15, alpha=0.2)
hoverprops = ItemProperties(labelcolor='white', bgcolor='blue',
                            fontsize=15, alpha=0.2)

menuitems = []
for label in ('open', 'close', 'save', 'save as', 'quit'):
    def on_select(item):
        print(f'you selected {item.labelstr}')
    item = MenuItem(fig, label, props=props, hoverprops=hoverprops,
                    on_select=on_select)
    menuitems.append(item)

menu = Menu(fig, menuitems)
plt.show()

Jupyter Notebook herunterladen: menu.ipynb

Python Quellcode herunterladen: menu.py

Gezippt herunterladen: menu.zip

Galerie generiert von Sphinx-Gallery

© Copyright 2002–2012 John Hunter, Darren Dale, Eric Firing, Michael Droettboom und das Matplotlib-Entwicklungsteam; 2012–2025 Das Matplotlib-Entwicklungsteam.

Erstellt mit Sphinx 8.2.3.

Erstellt aus v3.10.3-2-g3b85ba4365.

Erstellt mit dem PyData Sphinx Theme 0.15.4.