Ich suche nach einer Möglichkeit, schattierte Fehler-Regionen anstelle von Fehler-Balken in Python zu zeichnen.Schattierte Unsicherheit/Fehler Region in Matplotlib.pyplot
Ich weiß, dass es matplotlib.pyplot.fill_between()
gibt, mit denen Sie eine Problemumgehung für den Y-Fehler erstellen können, aber die X-Unsicherheit nicht enthält.
Irgendwelche Ideen? Leider hatte ich nicht genug Reputation um einen Kommentar abzugeben here.
Vielen Dank im Voraus!
bearbeiten
matplotlib.pyplot.fill_betweenx()
führt zu so etwas wie:
bearbeiten 2
Außerdem halte ich es für einen kompletten Unsicherheitsbereich für falsch. Im Folgenden werde ich zeichnen, was ich die richtige Form sein annehmen - ich hoffe, ich bin hier nicht falsch ...
import numpy as np
import matplotlib.pyplot as plt
x = np.asarray([1.0, 2.0, 3.0, 4.0])
y = np.asarray([1.0, 2.3, 3.0, 4.0])
xerr = np.asarray([0.1, 0.7, 0.1, 0.1])
yerr = np.asarray([0.1, 0.9, 1.2, 0.1])
plt.errorbar(x, y, yerr, xerr)
plt.fill_between(x, y-yerr, y+yerr, facecolor='#F0F8FF', alpha=1.0, edgecolor='none')
plt.fill_betweenx(y,x-xerr, x+xerr, facecolor='#F0F8FF', alpha=1.0, edgecolor='#8F94CC', linewidth=1, linestyle='dashed')
plt.show()
# Red lines added with inkscape.
Ich dachte auch in diese Richtung. Aber denken Sie nicht, dass das eine eher konservative Schätzung ist? Ich werde versuchen, eine intelligente Methode zu finden, um eine Grenzkurve an eine Punktwolke anzupassen. Was ist deine Frist? – Schorsch
Ich habe die Skizze ein wenig auf i) klarer sein und ii) um einige Fehler zu korrigieren. Ich glaube nicht, dass mein Beispiel konservativ ist. Stellen Sie sich völlig unkorrelierte Punkte mit Fehlerwerten vor (wo auch immer sie herkommen). Sie müssen daher quadratische Fehlerbereiche berücksichtigen. Wie verbreitet sich der Fehler zwischen zwei Punkten? Der einfachste Ansatz wäre die von mir skizzierte Annäherung erster Ordnung. Mach dir nicht zu viele Mühe! Python hat unglaublich viele Module, ich kann mir nicht vorstellen, dass es für so ein einfaches Problem nichts gibt. – smoneck