Code für beste Passform gerader Linie von einem scatter-plot in python
Unten ist mein code für die scatter-Darstellung der Daten in meiner Textdatei. Die Datei, die ich öffnen, enthält zwei Spalten. Die linke Spalte ist die x-Koordinaten und die Rechte Spalte die y-Koordinaten. der code erstellt ein Streudiagramm von x gegen y. Ich brauche ein code, um overplot eine Linie der besten Anpassung an die Daten in der scatter plot, und keiner der eingebauten pylab Funktion haben für mich gearbeitet.
from matplotlib import *
from pylab import *
with open('file.txt') as f:
data = [line.split() for line in f.readlines()]
out = [(float(x), float(y)) for x, y in data]
for i in out:
scatter(i[0],i[1])
xlabel('X')
ylabel('Y')
title('My Title')
show()
- möglich, Duplikat der Einbau einer gekrümmten best-fit-Linie zu einem Daten-set in python
- Ich brauche nicht eine gekrümmte best-fit-Linie, ich brauche eine gerade best-fit-Linie
- dg99, habe ich mir angeschaut, der link vor dem zum erstellen dieser Frage und ich habe versucht, Techniken aus dem link-ohne Erfolg.
- Können Sie zeigen Sie uns den code, den Sie versucht mit der
polyfit
Funktion und beschreiben Sie, wie es nicht funktioniert hätte? Denken Sie daran, diedeg
parameter1
um einen linearen fit. (Siehe docs hier.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Online-version von diese hervorragende Antwort, um den Verlauf der Linie der besten Passform ist:
Mit
np.unique(x)
stattx
behandelt den Fall, wox
ist nicht sortiert oder über doppelte Werte verfügt.(x)
am Ende. Ich habe in der scipy-Dokumentation und nicht sehen, eine Erklärung gibt. Wie wussten Sie, dass Sie verwenden, die syntax mitpoly1d
?x
.np.unique(x)
mit einem 1D-array mit den x-Punkte, die Sie möchten, um den Verlauf der Linie an.np.unique(x)
, nicht nur die zweite, wie ich oben sagte.Vorausgesetzt Linie der besten Passform, die für eine Reihe der Punkte ist:
wo:
Code und Grundstück
UPDATE:
notebook-version
X[-1]
undyfit[-1]
Können Sie numpy ist polyfit. Ich benutze die folgenden (Sie können sicher entfernen das bit über das Bestimmtheitsmaß und fehlerabschätzungen, ich denke, es sieht nett aus):
Umgesetzt haben @Micha 's-Lösung zu generieren, die ein trendline mit ein paar änderungen und dachte, ich würde Aktie:
order=2
)Rval=True
)Code: