Hinweis
Zum Ende springen, um den vollständigen Beispielcode herunterzuladen.
Füllen des Bereichs zwischen zwei vertikalen Linien#
Verwenden von 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)')

Nun füllen zwischen x1 und x2, wo eine logische Bedingung erfüllt ist. Beachten Sie, dass dies anders ist als das Aufrufen von
aufgrund von Randeffekten über mehrere zusammenhängende Bereiche.
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')

Dieses Beispiel verdeutlicht ein Problem; aufgrund der Datenrasterung gibt es unerwünschte, nicht gefüllte Dreiecke an den Kreuzungspunkten. Eine Brute-Force-Lösung wäre, alle Arrays vor dem Plotten auf ein sehr feines Gitter zu interpolieren.
plt.show()
Gesamtlaufzeit des Skripts: (0 Minuten 2,096 Sekunden)