Ich möchte die Punkte auswählen, die in zwei willkürliche Kurven fallen, die jeweils durch ein Array von Punkten definiert sind. Unten ist ein Beispiel. In Wirklichkeit basieren die Kurven, die ich habe, nicht auf einer funktionalen Form, sie sind Arrays. Wie kann ich nur die Punkte auswählen, die in die rote und blaue Kurve fallen, und sagen, dass sie eine andere Farbe haben?Python: Wählen Sie Punkte aus, die in zwei beliebige Kurven fallen
import numpy as np
import matplotlib.pyplot as plt
# generate arrays from gaussian
x = np.linspace(0.5, 3.5, 120)
y = np.exp(-np.power(x - 2, 2.)/(2 * np.power(.8, 2.)))
yy = .5*np.exp(-np.power(x - 2, 2.)/(2 * np.power(.4, 2.)))
# generate random data points
data_x = 4*np.random.rand(1000)
data_y = np.random.rand(1000)
fig = plt.figure()
ax = plt.axes()
ax.scatter(data_x, data_y, c='k', s=.1)
ax.scatter(x,y, s=3)
ax.scatter(x,yy, c='r', s=3)
plt.show()
diese Kurven (scipy, einige Modell-Entscheidung über die Art der Interpolation benötigt, wahrscheinlich etwas monotone) interpolieren und dann boolean-Logik (die Teil von MPL fill_between API bereits -> arg wo). Theoretische Bemerkung: Sie werden * immer * irgendeine Art von A-priori-Annahmen/Regularisierungen mit unvollständigen Cuves benötigen; in diesem Fall Teil der Interpolation. – sascha
Sind in Ihren tatsächlichen Daten die x-Werte für die beiden Kurven und die Daten identisch? ... ist (x0, x1, x2, x3, ...) für alle drei Datensätze gleich? – wwii
Ja, ich dachte, ich muss interpolieren. Haben Sie Code für das, was Sie beschreiben? – user2483176