Matplotlib-Logo mit Python erstellen

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernst du, wie du das Matplotlib-Logo mit Python erstellen kannst. Die Matplotlib-Bibliothek ist ein beliebtes Datenvisualisierungstool für Python und wird in der wissenschaftlichen Informatik weit verbreitet eingesetzt.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicke in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal musst du einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn du bei der Lernphase Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.

Importieren der erforderlichen Bibliotheken

In diesem Schritt importieren wir die erforderlichen Bibliotheken, einschließlich Matplotlib und NumPy.

import matplotlib.pyplot as plt
import numpy as np

Definition von Konstanten

In diesem Schritt definieren wir einige Konstanten, einschließlich der Farbe des Logos und der Schriftart.

MPL_BLUE = '#11557c'

def get_font_properties():
    ## Die ursprüngliche Schriftart ist Calibri. Wenn diese nicht installiert ist,
    ## greifen wir auf Carlito zurück, die metrisch gleichwertig ist.
    if 'Calibri' in matplotlib.font_manager.findfont('Calibri:bold'):
        return matplotlib.font_manager.FontProperties(family='Calibri',
                                                      weight='bold')
    if 'Carlito' in matplotlib.font_manager.findfont('Carlito:bold'):
        print('Ursprüngliche Schriftart nicht gefunden. Wechsel zu Carlito. '
              'Der Logotext wird nicht in der richtigen Schriftart erscheinen.')
        return matplotlib.font_manager.FontProperties(family='Carlito',
                                                      weight='bold')
    print('Ursprüngliche Schriftart nicht gefunden. '
          'Der Logotext wird nicht in der richtigen Schriftart erscheinen.')
    return None

Erstellen der Icon-Achsen

In diesem Schritt erstellen wir eine Polarkoordinate, die den Matplotlib-Radarplot enthält.

def create_icon_axes(fig, ax_position, lw_bars, lw_grid, lw_border, rgrid):
    """
    Erstellt eine Polarkoordinate, die den matplotlib-Radarplot enthält.

    Parameter
    ----------
    fig : matplotlib.figure.Figure
        Die Figur, in die gezeichnet werden soll.
    ax_position : (float, float, float, float)
        Die Position der erstellten Achse in Figurkoordinaten als
        (x, y, Breite, Höhe).
    lw_bars : float
        Die Linienstärke der Balken.
    lw_grid : float
        Die Linienstärke des Gitters.
    lw_border : float
        Die Linienstärke der Achsengrenze.
    rgrid : array-like
        Positionen des radialen Gitters.

    Rückgabe
    -------
    ax : matplotlib.axes.Axes
        Die erstellte Achse.
    """
    with plt.rc_context({'axes.edgecolor': MPL_BLUE,
                         'axes.linewidth': lw_border}):
        ax = fig.add_axes(ax_position, projection='polar')
        ax.set_axisbelow(True)

        N = 7
        arc = 2. * np.pi
        theta = np.arange(0.0, arc, arc / N)
        radii = np.array([2, 6, 8, 7, 4, 5, 8])
        width = np.pi / 4 * np.array([0.4, 0.4, 0.6, 0.8, 0.2, 0.5, 0.3])
        bars = ax.bar(theta, radii, width=width, bottom=0.0, align='edge',
                      edgecolor='0.3', lw=lw_bars)
        for r, bar in zip(radii, bars):
            color = *cm.jet(r / 10.)[:3], 0.6  ## Farbe aus jet mit alpha=0.6
            bar.set_facecolor(color)

        ax.tick_params(labelbottom=False, labeltop=False,
                       labelleft=False, labelright=False)

        ax.grid(lw=lw_grid, color='0.9')
        ax.set_rmax(9)
        ax.set_yticks(rgrid)

        ## der tatsächliche sichtbare Hintergrund - erstreckt sich etwas über die Achse hinaus
        ax.add_patch(Rectangle((0, 0), arc, 9.58,
                               facecolor='white', zorder=0,
                               clip_on=False, in_layout=False))
        return ax

Erstellen der Textachsen

In diesem Schritt erstellen wir eine Achse in fig, die 'matplotlib' als Text enthält.

def create_text_axes(fig, height_px):
    """Erstellt eine Achse in *fig*, die 'matplotlib' als Text enthält."""
    ax = fig.add_axes((0, 0, 1, 1))
    ax.set_aspect("equal")
    ax.set_axis_off()

    path = TextPath((0, 0), "matplotlib", size=height_px * 0.8,
                    prop=get_font_properties())

    angle = 4.25  ## Grad
    trans = mtrans.Affine2D().skew_deg(angle, 0)

    patch = PathPatch(path, transform=trans + ax.transData, color=MPL_BLUE,
                      lw=0)
    ax.add_patch(patch)
    ax.autoscale()

Erstellen des Logos

In diesem Schritt erstellen wir die vollständige Figur mit dem Matplotlib-Logo.

def make_logo(height_px, lw_bars, lw_grid, lw_border, rgrid, with_text=False):
    """
    Erstellt eine vollständige Figur mit dem Matplotlib-Logo.

    Parameter
    ----------
    height_px : int
        Höhe der Figur in Pixeln.
    lw_bars : float
        Die Linienstärke der Balkengrenzen.
    lw_grid : float
        Die Linienstärke des Gitters.
    lw_border : float
        Die Linienstärke der Icon-Grenze.
    rgrid : Folge von float
        Die Positionen des radialen Gitters.
    with_text : bool
        Ob nur das Icon gezeichnet werden soll oder 'matplotlib' als Text enthalten sein soll.
    """
    dpi = 100
    height = height_px / dpi
    figsize = (5 * height, height) wenn with_text sonst (height, height)
    fig = plt.figure(figsize=figsize, dpi=dpi)
    fig.patch.set_alpha(0)

    Wenn with_text:
        create_text_axes(fig, height_px)
    ax_pos = (0.535, 0.12,.17, 0.75) wenn with_text sonst (0.03, 0.03,.94,.94)
    ax = create_icon_axes(fig, ax_pos, lw_bars, lw_grid, lw_border, rgrid)

    return fig, ax

Anzeigen der Logos

In diesem Schritt werden wir die Matplotlib-Logos in verschiedenen Größen anzeigen.

## Ein großes Logo:
make_logo(height_px=110, lw_bars=0.7, lw_grid=0.5, lw_border=1,
          rgrid=[1, 3, 5, 7])

## Ein kleines 32px-Logo:
make_logo(height_px=32, lw_bars=0.3, lw_grid=0.3, lw_border=0.3, rgrid=[5])

## Ein großes Logo mit Text, wie es auf der Matplotlib-Website verwendet wird.
make_logo(height_px=110, lw_bars=0.7, lw_grid=0.5, lw_border=1,
          rgrid=[1, 3, 5, 7], with_text=True)
plt.show()

Zusammenfassung

In diesem Lab haben Sie gelernt, wie man das Matplotlib-Logo mit Python erstellt. Indem Sie den obigen Schritten folgen, können Sie das Logo an Ihre Bedürfnisse und Vorlieben anpassen.