Fill Betweenx-Demo #

Wird verwendet fill_betweenx, um entlang der horizontalen Richtung zwischen zwei Kurven zu färben.

import matplotlib.pyplot as plt
import numpy as np


y = np.arange(0.0, 2, 0.01)
x1 = np.sin(2 * np.pi * y)
x2 = 1.2 * np.sin(4 * np.pi * y)

fig, [ax1, ax2, ax3] = plt.subplots(1, 3, sharey=True, figsize=(6, 6))

ax1.fill_betweenx(y, 0, x1)
ax1.set_title('between (x1, 0)')

ax2.fill_betweenx(y, x1, 1)
ax2.set_title('between (x1, 1)')
ax2.set_xlabel('x')

ax3.fill_betweenx(y, x1, x2)
ax3.set_title('between (x1, x2)')
zwischen (x1, 0), zwischen (x1, 1), zwischen (x1, x2)
Text(0.5, 1.0, 'between (x1, x2)')

Füllen Sie nun zwischen x1 und x2, wo eine logische Bedingung erfüllt ist. Beachten Sie, dass dies anders ist als das Aufrufen:

fill_between(y[where], x1[where], x2[where])

aufgrund von Randeffekten über mehrere zusammenhängende Regionen.

fig, [ax, ax1] = plt.subplots(1, 2, sharey=True, figsize=(6, 6))
ax.plot(x1, y, x2, y, color='black')
ax.fill_betweenx(y, x1, x2, where=x2 >= x1, facecolor='green')
ax.fill_betweenx(y, x1, x2, where=x2 <= x1, facecolor='red')
ax.set_title('fill_betweenx where')

# Test support for masked arrays.
x2 = np.ma.masked_greater(x2, 1.0)
ax1.plot(x1, y, x2, y, color='black')
ax1.fill_betweenx(y, x1, x2, where=x2 >= x1, facecolor='green')
ax1.fill_betweenx(y, x1, x2, where=x2 <= x1, facecolor='red')
ax1.set_title('regions with x2 > 1 are masked')
fill_betweenx wobei Bereiche mit x2 > 1 maskiert werden
Text(0.5, 1.0, 'regions with x2 > 1 are masked')

Dieses Beispiel veranschaulicht ein Problem; Aufgrund der Datenrasterung gibt es an den Kreuzungspunkten unerwünschte ungefüllte Dreiecke. Eine Brute-Force-Lösung wäre, alle Arrays vor dem Plotten auf ein sehr feines Gitter zu interpolieren.

Gesamtlaufzeit des Skripts: ( 0 Minuten 1,113 Sekunden)

Galerie generiert von Sphinx-Gallery