Formatieren von Währungsdiagrammen mit Matplotlib

MatplotlibMatplotlibBeginner
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

Beim Visualisieren von Finanzdaten ist es wichtig, die Achsen mit Währungssymbolen richtig zu formatieren. Matplotlib ist eine leistungsstarke Python-Bibliothek zur Erstellung von Visualisierungen, zeigt aber standardmäßig keine Währungssymbole auf den Achsen an.

In diesem Lab lernen wir, wie wir ein Matplotlib-Diagramm anpassen können, um Dollarzeichen auf den Beschriftungen der y-Achse anzuzeigen. Diese Fähigkeit ist wertvoll, wenn Sie mit Finanzdaten, Verkaufszahlen, Budgets oder anderen Datensätzen arbeiten, die eine Währungsformatierung erfordern.

Tipps für die virtuelle Maschine (VM)

Nachdem der Start der VM abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und auf Jupyter Notebook für die Übung zuzugreifen.

click-notebook

Sie müssen möglicherweise einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Aufgrund von Einschränkungen in Jupyter Notebook kann die Überprüfung der Vorgänge nicht automatisiert werden.

Wenn Sie während des Labs auf Probleme stoßen, können Sie sich gerne an Labby wenden. Bitte geben Sie uns nach der Sitzung Feedback, und wir werden alle Probleme umgehend für Sie beheben.

Einrichten der Bibliotheken und Erstellen von Beispieldaten

In diesem ersten Schritt werden wir die erforderlichen Bibliotheken importieren und Beispieldaten für unser Finanzdiagramm erstellen. Wir müssen sowohl Matplotlib für die Visualisierung als auch NumPy für die Datenerzeugung importieren.

Geben Sie in der ersten Zelle Ihres Notebooks den folgenden Code ein und führen Sie ihn aus, um die benötigten Bibliotheken zu importieren:

## Import necessary libraries
import matplotlib.pyplot as plt
import numpy as np

## Display plots inline in the notebook
%matplotlib inline

print("Libraries imported successfully!")

Nachdem Sie den Code ausgeführt haben (drücken Sie Shift+Enter), sollten Sie die folgende Ausgabe sehen:

Libraries imported successfully!
libraries-imported

Jetzt erstellen wir einige Beispieldaten für die Finanzvisualisierung. Finanzdaten repräsentieren oft Werte über die Zeit, daher erstellen wir einen einfachen Datensatz, der möglicherweise den täglichen Umsatz über einen bestimmten Zeitraum darstellt.

Fügen Sie in einer neuen Zelle den folgenden Code hinzu und führen Sie ihn aus:

## Set a random seed for reproducibility
np.random.seed(42)

## Generate financial data: 30 days of revenue data
days = np.arange(1, 31)
daily_revenue = np.random.uniform(low=1000, high=5000, size=30)

print("Sample of daily revenue data (first 5 days):")
for i in range(5):
    print(f"Day {days[i]}: ${daily_revenue[i]:.2f}")

Nachdem Sie diesen Code ausgeführt haben, werden Sie die ersten 5 Tage unserer Beispielumsatzdaten sehen:

Sample of daily revenue data (first 5 days):
Day 1: $3745.40
Day 2: $3992.60
Day 3: $2827.45
Day 4: $4137.54
Day 5: $1579.63

Dieser Beispieldatensatz repräsentiert tägliche Umsatzwerte zwischen $1.000 und $5.000 über einen Zeitraum von 30 Tagen. Wir werden diese Daten im nächsten Schritt verwenden, um unser Diagramm zu erstellen.

Erstellen eines einfachen Finanzdiagramms

Jetzt, da unsere Daten bereit sind, erstellen wir ein einfaches Diagramm, um den täglichen Umsatz zu visualisieren. Wir beginnen mit einem einfachen Linien Diagramm, das den Umsatztrend über den 30 - tägigen Zeitraum zeigt.

Fügen Sie in einer neuen Zelle Ihres Notebooks den folgenden Code hinzu und führen Sie ihn aus:

## Create a figure and axes
fig, ax = plt.subplots(figsize=(10, 6))

## Plot the daily revenue data
ax.plot(days, daily_revenue, marker='o', linestyle='-', color='blue', linewidth=2, markersize=6)

## Add labels and title
ax.set_xlabel('Day', fontsize=12)
ax.set_ylabel('Revenue', fontsize=12)
ax.set_title('Daily Revenue Over 30 Days', fontsize=14, fontweight='bold')

## Add grid for better readability
ax.grid(True, linestyle='--', alpha=0.7)

## Display the plot
plt.tight_layout()
plt.show()

print("Basic plot created successfully!")

Nachdem Sie diesen Code ausgeführt haben, sollten Sie ein Linien Diagramm sehen, das den täglichen Umsatztrend zeigt. Es sollte in etwa so aussehen (die tatsächlichen Werte können aufgrund der Zufallsgenerierung geringfügig variieren):

Basic Revenue Plot

Lassen Sie uns analysieren, was wir in diesem Code getan haben:

  1. fig, ax = plt.subplots(figsize=(10, 6)) - Erstellte eine Figur und Achsen mit einer Größe von 10×6 Zoll
  2. ax.plot(days, daily_revenue, ...) - Plottete unsere Daten mit den Tagen auf der x - Achse und dem Umsatz auf der y - Achse
  3. ax.set_xlabel(), ax.set_ylabel(), ax.set_title() - Fügte Beschriftungen und einen Titel zu unserem Diagramm hinzu
  4. ax.grid() - Fügte ein Gitter hinzu, um die Daten leichter lesbar zu machen
  5. plt.tight_layout() - Passte die Abstände an, um sicherzustellen, dass alles gut passt
  6. plt.show() - Zeigte das Diagramm an

Beachten Sie, dass die y - Achse derzeit einfache Zahlen ohne Dollarzeichen anzeigt. Im nächsten Schritt werden wir unser Diagramm so ändern, dass es eine korrekte Währungsformatierung auf der y - Achse anzeigt.

Formatieren der Y-Achsenbeschriftungen mit Dollarzeichen

Jetzt, da wir unser einfaches Diagramm haben, formatieren wir die Beschriftungen der Y-Achse, um Dollarzeichen anzuzeigen. Dies macht unsere Finanzdaten lesbarer und gibt ihnen ein professionelles Aussehen.

Um die Markierungsbeschriftungen auf der Y-Achse zu formatieren, verwenden wir das ticker-Modul von Matplotlib, das verschiedene Formatierungsoptionen bietet. Insbesondere verwenden wir die StrMethodFormatter-Klasse, um einen benutzerdefinierten Formatter für unsere Y-Achse zu erstellen.

Fügen Sie in einer neuen Zelle Ihres Notebooks den folgenden Code hinzu und führen Sie ihn aus:

## Import the necessary module for formatting
import matplotlib.ticker as ticker

## Create a figure and axes
fig, ax = plt.subplots(figsize=(10, 6))

## Plot the daily revenue data
ax.plot(days, daily_revenue, marker='o', linestyle='-', color='blue', linewidth=2, markersize=6)

## Format y-axis with dollar signs
formatter = ticker.StrMethodFormatter('${x:,.2f}')
ax.yaxis.set_major_formatter(formatter)

## Add labels and title
ax.set_xlabel('Day', fontsize=12)
ax.set_ylabel('Revenue ($)', fontsize=12)
ax.set_title('Daily Revenue Over 30 Days', fontsize=14, fontweight='bold')

## Add grid for better readability
ax.grid(True, linestyle='--', alpha=0.7)

## Display the plot
plt.tight_layout()
plt.show()

print("Plot with dollar-formatted y-axis created!")

Nachdem Sie diesen Code ausgeführt haben, sollten Sie ein neues Diagramm sehen, bei dem die Beschriftungen der Y-Achse Dollarzeichen enthalten.

Lassen Sie uns den wichtigsten Teil dieses Codes erklären:

formatter = ticker.StrMethodFormatter('${x:,.2f}')
ax.yaxis.set_major_formatter(formatter)

Hier ist, was diese Formatierungszeichenfolge bewirkt:

  • $ - Fügt ein Dollarzeichen am Anfang jeder Beschriftung hinzu
  • {x:,.2f} - Formatiert die Zahl wie folgt:
    • , - Komma als Tausendertrennzeichen (z.B. 1.000 statt 1000)
    • .2f - Zwei Dezimalstellen (z.B. $1.234,56)

Dieser Formatter wird auf alle Hauptmarkierungsbeschriftungen der Y-Achse angewendet. Beachten Sie, wie das Diagramm nun deutlich zeigt, dass es sich bei den Werten um Dollar handelt, was es für die Visualisierung von Finanzdaten viel geeigneter macht.

Verbessern des Diagramms für eine bessere Visualisierung von Finanzdaten

Jetzt, da wir die grundlegende Währungsformatierung implementiert haben, verbessern wir unser Diagramm weiter, um es für die Analyse von Finanzdaten nützlicher zu machen. Wir werden mehrere Verbesserungen vornehmen:

  1. Eine horizontale Linie, die den durchschnittlichen täglichen Umsatz zeigt
  2. Anmerkungen, die die Tage mit dem höchsten und niedrigsten Umsatz hervorheben
  3. Angepasste Markierungsparameter für bessere Lesbarkeit
  4. Ein beschreibender Titel und eine Legende

Fügen Sie in einer neuen Zelle Ihres Notebooks den folgenden Code hinzu und führen Sie ihn aus:

## Import the necessary module for formatting
import matplotlib.ticker as ticker

## Create a figure and axes
fig, ax = plt.subplots(figsize=(12, 7))

## Plot the daily revenue data
ax.plot(days, daily_revenue, marker='o', linestyle='-', color='blue',
        linewidth=2, markersize=6, label='Daily Revenue')

## Calculate statistics
avg_revenue = np.mean(daily_revenue)
max_revenue = np.max(daily_revenue)
min_revenue = np.min(daily_revenue)
max_day = days[np.argmax(daily_revenue)]
min_day = days[np.argmin(daily_revenue)]

## Add a horizontal line for average revenue
ax.axhline(y=avg_revenue, color='r', linestyle='--', alpha=0.7,
           label=f'Average Revenue: ${avg_revenue:.2f}')

## Format y-axis with dollar signs
formatter = ticker.StrMethodFormatter('${x:,.2f}')
ax.yaxis.set_major_formatter(formatter)

## Customize tick parameters
ax.tick_params(axis='both', which='major', labelsize=10)
ax.yaxis.set_major_locator(ticker.MaxNLocator(nbins=10))
ax.xaxis.set_major_locator(ticker.MultipleLocator(base=5))

## Add annotations for max and min revenue
ax.annotate(f'Max: ${max_revenue:.2f}', xy=(max_day, max_revenue),
            xytext=(max_day+1, max_revenue+200),
            arrowprops=dict(facecolor='black', shrink=0.05, width=1.5))

ax.annotate(f'Min: ${min_revenue:.2f}', xy=(min_day, min_revenue),
            xytext=(min_day+1, min_revenue-200),
            arrowprops=dict(facecolor='black', shrink=0.05, width=1.5))

## Add labels and title
ax.set_xlabel('Day of Month', fontsize=12)
ax.set_ylabel('Revenue ($)', fontsize=12)
ax.set_title('Daily Revenue Analysis - 30 Day Period', fontsize=14, fontweight='bold')

## Set x-axis limits to show a bit of padding
ax.set_xlim(0, 31)

## Add grid for better readability
ax.grid(True, linestyle='--', alpha=0.7)

## Add legend
ax.legend(loc='upper right', fontsize=10)

## Display the plot
plt.tight_layout()
plt.show()

print("Enhanced financial plot created successfully!")

Nachdem Sie diesen Code ausgeführt haben, sollten Sie ein viel informativeres Diagramm sehen, das Folgendes aufweist:

  1. Dollarzeichen-Formatierung auf der Y-Achse
  2. Eine horizontale rote gestrichelte Linie, die den durchschnittlichen Umsatz zeigt
  3. Anmerkungen, die auf die Tage mit dem höchsten und niedrigsten Umsatz verweisen
  4. Sauberere Markierungen mit besserem Abstand
  5. Eine Legende, die erklärt, was jedes Element darstellt

Lassen Sie uns einige der neuen Elemente erklären:

  • ax.axhline() - Fügt eine horizontale Linie an der angegebenen Y-Koordinate hinzu (in diesem Fall unseren durchschnittlichen Umsatz)
  • ax.yaxis.set_major_locator() - Steuert, wie viele Markierungen auf der Y-Achse erscheinen
  • ax.xaxis.set_major_locator() - Legt fest, dass die X-Achse Markierungen in Intervallen von 5 Tagen anzeigt
  • ax.annotate() - Fügt Textanmerkungen mit Pfeilen hinzu, die auf bestimmte Datenpunkte verweisen
  • ax.legend() - Fügt eine Legende hinzu, die die verschiedenen Elemente im Diagramm erklärt

Diese Verbesserungen machen das Diagramm für die Finanzanalyse viel nützlicher, indem sie wichtige Statistiken hervorheben und die Daten leichter interpretierbar machen.

Speichern des Diagramms und Erstellen einer wiederverwendbaren Funktion

In diesem letzten Schritt erstellen wir eine wiederverwendbare Funktion, um Währungsformatierte Diagramme zu generieren und unsere Visualisierung in einer Datei zu speichern. Dieser Ansatz erleichtert es, in Zukunft die gleiche Formatierung auf verschiedene Finanzdatensätze anzuwenden.

Fügen Sie in einer neuen Zelle Ihres Notebooks den folgenden Code hinzu und führen Sie ihn aus:

def create_currency_plot(x_data, y_data, title='Financial Data',
                         xlabel='X-Axis', ylabel='Amount ($)',
                         filename=None, show_stats=True):
    """
    Create a plot with currency formatting on the y-axis.

    Parameters:
    -----------
    x_data : array-like
        Data for the x-axis
    y_data : array-like
        Data for the y-axis (currency values)
    title : str
        Title of the plot
    xlabel : str
        Label for the x-axis
    ylabel : str
        Label for the y-axis
    filename : str, optional
        If provided, save the plot to this filename
    show_stats : bool
        Whether to show statistics (average, min, max)

    Returns:
    --------
    fig, ax : tuple
        The figure and axes objects
    """
    ## Import the necessary module for formatting
    import matplotlib.ticker as ticker

    ## Create a figure and axes
    fig, ax = plt.subplots(figsize=(12, 7))

    ## Plot the data
    ax.plot(x_data, y_data, marker='o', linestyle='-', color='blue',
            linewidth=2, markersize=6, label='Data')

    if show_stats:
        ## Calculate statistics
        avg_value = np.mean(y_data)
        max_value = np.max(y_data)
        min_value = np.min(y_data)
        max_x = x_data[np.argmax(y_data)]
        min_x = x_data[np.argmin(y_data)]

        ## Add a horizontal line for average value
        ax.axhline(y=avg_value, color='r', linestyle='--', alpha=0.7,
                   label=f'Average: ${avg_value:.2f}')

        ## Add annotations for max and min values
        ax.annotate(f'Max: ${max_value:.2f}', xy=(max_x, max_value),
                    xytext=(max_x+1, max_value+200),
                    arrowprops=dict(facecolor='black', shrink=0.05, width=1.5))

        ax.annotate(f'Min: ${min_value:.2f}', xy=(min_x, min_value),
                    xytext=(min_x+1, min_value-200),
                    arrowprops=dict(facecolor='black', shrink=0.05, width=1.5))

    ## Format y-axis with dollar signs
    formatter = ticker.StrMethodFormatter('${x:,.2f}')
    ax.yaxis.set_major_formatter(formatter)

    ## Customize tick parameters
    ax.tick_params(axis='both', which='major', labelsize=10)

    ## Add labels and title
    ax.set_xlabel(xlabel, fontsize=12)
    ax.set_ylabel(ylabel, fontsize=12)
    ax.set_title(title, fontsize=14, fontweight='bold')

    ## Add grid for better readability
    ax.grid(True, linestyle='--', alpha=0.7)

    ## Add legend
    if show_stats:
        ax.legend(loc='best', fontsize=10)

    ## Adjust layout
    plt.tight_layout()

    ## Save the plot if filename is provided
    if filename:
        plt.savefig(filename, dpi=300, bbox_inches='tight')
        print(f"Plot saved as '{filename}'")

    return fig, ax

## Use our function to create and save a plot
fig, ax = create_currency_plot(
    days,
    daily_revenue,
    title='Monthly Revenue Report',
    xlabel='Day of Month',
    ylabel='Daily Revenue ($)',
    filename='revenue_plot.png'
)

## Display the plot
plt.show()

print("Function created and plot saved successfully!")

Nachdem Sie diesen Code ausgeführt haben, sollten Sie Folgendes sehen:

  1. Ein ähnliches Diagramm wie das, das wir im vorherigen Schritt erstellt haben, aber mit unserer benutzerdefinierten Funktion generiert
  2. Eine Meldung, die bestätigt, dass das Diagramm in einer Datei namens revenue_plot.png gespeichert wurde

Die Funktion, die wir erstellt haben:

  • Nimmt Daten für die X- und Y-Achsen entgegen
  • Ermöglicht die Anpassung von Beschriftungen und Titel
  • Bietet die Möglichkeit, das Diagramm in einer Datei zu speichern
  • Kann Statistiken wie Durchschnitt, Minimum und Maximum anzeigen oder ausblenden
  • Gibt die Figure- und Axes-Objekte zurück, falls weitere Anpassungen erforderlich sind

Diese wiederverwendbare Funktion erleichtert es, in Zukunft konsistent formatierte Finanzdiagramme zu erstellen. Sie können einfach diese Funktion mit verschiedenen Datensätzen aufrufen, und sie wird automatisch alle Währungsformatierungen und statistischen Anmerkungen verarbeiten.

Um zu überprüfen, ob unser Diagramm korrekt gespeichert wurde, überprüfen wir, ob die Datei existiert:

import os
if os.path.exists('revenue_plot.png'):
    print("Plot file exists! Size:", os.path.getsize('revenue_plot.png'), "bytes")
else:
    print("Plot file was not saved correctly.")

Sie sollten eine Meldung sehen, die bestätigt, dass die Datei existiert und ihre Größe angibt.

Herzlichen Glückwunsch! Sie haben erfolgreich gelernt, wie Sie Diagramme mit Dollarzeichen formatieren und professionell aussehende Finanzvisualisierungen mit Matplotlib erstellen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit Matplotlib Finanzdiagramme mit korrekter Währungsformatierung erstellt. Wir haben mehrere wichtige Konzepte behandelt:

  1. Generieren und Arbeiten mit Beispiel-Finanzdaten
  2. Erstellen von einfachen Diagrammen mit Matplotlib
  3. Formatieren von Y-Achsenbeschriftungen mit Dollarzeichen mithilfe der StrMethodFormatter-Klasse
  4. Verbessern von Diagrammen mit Statistiken, Anmerkungen und verbessertem Styling
  5. Erstellen einer wiederverwendbaren Funktion zur Generierung von konsistent Währungsformatierte Diagrammen

Diese Fähigkeiten sind für alle, die mit der Visualisierung von Finanzdaten arbeiten, unerlässlich, da sie es Ihnen ermöglichen, professionelle und informative Diagramme zu erstellen, die Geldwerte klar kommunizieren.

Die Techniken, die Sie gelernt haben, können auf verschiedene Finanzdatensätze angewendet werden, wie beispielsweise:

  • Verkaufs- und Umsatzberichte
  • Budgetanalyse
  • Nachverfolgung der Anlageleistung
  • Kostenanalyse
  • Ausgabenverfolgung

Durch die richtige Formatierung Ihrer Achsen mit Währungssymbolen machen Sie Ihre Visualisierungen intuitiver und professioneller und verbessern die Effektivität Ihrer Datenkommunikation.