Matplotlib Fill Between und Alpha

Beginner

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

Einführung

Beim Datenvisualisierung ist es manchmal erforderlich, bestimmte Bereiche oder Bereiche in einem Graphen hervorzuheben. Die fill_between-Funktion von Matplotlib ist ein nützliches Tool zum Erzeugen eines schattierten Bereichs zwischen einer Minimal- und einer maximalen Grenze. Es kann auch verwendet werden, um das visuelle Erscheinungsbild eines Graphen zu verbessern. Der alpha-Argument kann verwendet werden, um die Transparenz des schattierten Bereichs anzupassen. In diesem Lab werden Sie durch mehrere Beispiele der Verwendung von fill_between und alpha in Matplotlib geführt, um visuell ansprechendere und informativere Graphen zu erstellen.

VM-Tipps

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

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie während des Lernens Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Das Verbessern eines Liniendiagramms mit fill_between

Das erste Beispiel zeigt, wie man ein Liniendiagramm mit fill_between verbessert. Wir werden Finanzdaten von Google verwenden, um zwei Teilgraphen zu erstellen, einen mit einem einfachen Liniendiagramm und einen mit einem gefüllten Liniendiagramm.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cbook as cbook

## ladet einige Beispiel-Finanzdaten
r = cbook.get_sample_data('goog.npz')['price_data'].view(np.recarray)

## erstellt zwei Teilgraphen mit den geteilten x- und y-Achsen
fig, (ax1, ax2) = plt.subplots(1, 2, sharex=True, sharey=True)

pricemin = r.close.min()

ax1.plot(r.date, r.close, lw=2)
ax2.fill_between(r.date, pricemin, r.close, alpha=0.7)

for ax in ax1, ax2:
    ax.grid(True)
    ax.label_outer()

ax1.set_ylabel('price')
fig.suptitle('Google (GOOG) daily closing price')
fig.autofmt_xdate()

Das Verwenden von alpha zum Weichenhalten von Farben

Das alpha-Argument kann auch verwendet werden, um Farben zu weichenhalten, um visuell ansprechenderere Diagramme zu erhalten. Im folgenden Beispiel berechnen wir zwei Populationen von Zufallswalkern mit unterschiedlicher Mittelwert und Standardabweichung der Normalverteilungen, aus denen die Schritte gezogen werden. Wir verwenden gefüllte Bereiche, um +/- eine Standardabweichung der Mittelposition der Population zu plotten.

## Fixing random state for reproducibility
np.random.seed(19680801)

Nsteps, Nwalkers = 100, 250
t = np.arange(Nsteps)

## an (Nsteps x Nwalkers) array of random walk steps
S1 = 0.004 + 0.02*np.random.randn(Nsteps, Nwalkers)
S2 = 0.002 + 0.01*np.random.randn(Nsteps, Nwalkers)

## an (Nsteps x Nwalkers) array of random walker positions
X1 = S1.cumsum(axis=0)
X2 = S2.cumsum(axis=0)

## Nsteps length arrays empirical means and standard deviations of both
## populations over time
mu1 = X1.mean(axis=1)
sigma1 = X1.std(axis=1)
mu2 = X2.mean(axis=1)
sigma2 = X2.std(axis=1)

## plot it!
fig, ax = plt.subplots(1)
ax.plot(t, mu1, lw=2, label='mean population 1')
ax.plot(t, mu2, lw=2, label='mean population 2')
ax.fill_between(t, mu1+sigma1, mu1-sigma1, facecolor='C0', alpha=0.4)
ax.fill_between(t, mu2+sigma2, mu2-sigma2, facecolor='C1', alpha=0.4)
ax.set_title(r'random walkers empirical $\mu$ and $\pm \sigma$ interval')
ax.legend(loc='upper left')
ax.set_xlabel('num steps')
ax.set_ylabel('position')
ax.grid()

Das Hervorheben bestimmter Bereiche mit where

Das Schlüsselwortargument where ist sehr praktisch, um bestimmte Bereiche des Graphen hervorzuheben. where nimmt eine boolesche Maske der gleichen Länge wie die x-, ymin- und ymax-Argumente entgegen und füllt nur den Bereich aus, in dem die boolesche Maske True ist. Im folgenden Beispiel simulieren wir einen einzelnen Zufallswalker und berechnen den analytischen Mittelwert und die Standardabweichung der Populationspositionen. Der Populationsmittelwert wird als gestrichelte Linie gezeigt, und die Plus/Minus-Eine-Standardabweichung vom Mittelwert wird als gefüllter Bereich gezeigt. Wir verwenden die where-Maske X > upper_bound, um den Bereich zu finden, in dem der Walker außerhalb der einen-Standardabweichungsgrenze ist, und färben diesen Bereich rot ein.

## Fixing random state for reproducibility
np.random.seed(1)

Nsteps = 500
t = np.arange(Nsteps)

mu = 0.002
sigma = 0.01

## the steps and position
S = mu + sigma*np.random.randn(Nsteps)
X = S.cumsum()

## the 1 sigma upper and lower analytic population bounds
lower_bound = mu*t - sigma*np.sqrt(t)
upper_bound = mu*t + sigma*np.sqrt(t)

fig, ax = plt.subplots(1)
ax.plot(t, X, lw=2, label='walker position')
ax.plot(t, mu*t, lw=1, label='population mean', color='C0', ls='--')
ax.fill_between(t, lower_bound, upper_bound, facecolor='C0', alpha=0.4,
                label='1 sigma range')
ax.legend(loc='upper left')

## here we use the where argument to only fill the region where the
## walker is above the population 1 sigma boundary
ax.fill_between(t, upper_bound, X, where=X > upper_bound, fc='red', alpha=0.4)
ax.fill_between(t, lower_bound, X, where=X < lower_bound, fc='red', alpha=0.4)
ax.set_xlabel('num steps')
ax.set_ylabel('position')
ax.grid()

Das Hervorheben von Bereichen einer Achse mit axhspan und axvspan

Ein weiterer praktischer Gebrauch von gefüllten Bereichen ist das Hervorheben horizontaler oder vertikaler Bereiche einer Achse. Dazu hat Matplotlib die Hilfsfunktionen axhspan und axvspan. Weitere Informationen finden Sie in der axhspan_demo-Galerie.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.axhspan(0.25, 0.75, facecolor='0.5', alpha=0.5)
ax.axvspan(6, 7, facecolor='r', alpha=0.5)

plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man die fill_between-Funktion und das alpha-Argument in Matplotlib verwendet, um visuell ansprechender und informativere Diagramme zu erstellen. Wir haben mehrere Beispiele gezeigt, wie fill_between und alpha verwendet werden, um bestimmte Bereiche oder Bereiche eines Diagramms hervorzuheben. Wir haben auch die axhspan- und axvspan-Funktionen zur Hervorhebung von Bereichen einer Achse kurz vorgestellt.