R - suchen Sie Schnittpunkt von zwei Kurven
Gibt es eine Reihe von Fragen in diesem forum zum Auffinden von Schnittpunkten zwischen einem Modell ausgestattet und einige raw-Daten. Allerdings, in meinem Fall, ich bin in einem frühen Stadium Projekt, wo ich bin immer noch der Auswertung.
Zu beginnen, habe ich einen Daten-frame, der enthält einen Verhältnis-Wert, dessen ideale Wert sollte 1,0 sein. Ich habe gezeichnet, den Daten-frame und auch verwendet werden abline()
Funktion zum zeichnen einer horizontalen Linie auf y=1.0
. Diese horizontale Linie und die Handlung der Verhältnisse schneiden einander in einem Punkt.
plot(a$TIME.STAMP, a$PROCESS.RATIO,
xlab='Time (5s)',
ylab='Process ratio',
col='darkolivegreen',
type='l')
abline(h=1.0,col='red')
Mein Ziel ist, suchen Sie den Schnittpunkt, sagen x
und zeichnen Sie zwei vertikale Linien bei x±k
als abline(v=x-k)
und abline(v=x+k)
wo, k bestimmten band der Toleranz.
Anwendung ein raster für die Handlung ist nicht wirklich eine option, weil Sie dieses Grundstück als Teil einer multi-panel-plot. Und, weil ratiodata ist sehr eng gelegt, die Handlung nicht zu lesbar. Endlich, die x±k
wird sehr wertvoll in meinen Diskussionen mit den domain-Experten.
Können Sie bitte führe mich, wie dies zu erreichen?
a
.InformationsquelleAutor cogitoergosum | 2015-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind zwei Lösungen. Die erste benutzt
locator()
und wird nützlich sein, wenn Sie nicht zu viele Diagramme zu erzeugen:Durch klicken auf den Schnittpunkt (und stoppen Sie die locator-oben Links in der Grafik), erhalten Sie die Kreuzung:
Würden Sie dann hinzufügen
abline(v=2.765327)
.Wenn Sie brauchen eine programmierbare Weg zu finden, die Kreuzung, haben wir zur Schätzung der Funktion der Daten. Leider, Sie haben nicht uns mit PROZESS.VERHÄLTNIS, so können wir nur erraten, was deine Daten Aussehen. Hoffentlich, werden die Daten glatt ist. Hier ist eine Lösung, die funktionieren sollte mit nichtlinearen Daten. Wie Sie sehen können, in der vorherigen Diagramm alle R tut, ist zeichnen Sie eine Linie zwischen den Punkten. Also, wir passen schon auf eine Kurve. Hier bin ich das fitting der Daten mit einem Polynom der Ordnung 2. Wenn Ihre Daten ist weniger linear, können Sie versuchen, die Erhöhung der Ordnung (hier 2). Wenn die Daten linear ist, verwenden Sie eine einfache
lm
.Mit diesem ausgestattet, Kurve, wir können dann finden Sie den nächsten Punkt auf y=1. Haben wir einmal diesen Punkt, wir können zeichnen Sie vertikale Linien auf der Kreuzung und in +/-k.
tan(x)
Kurve von rund0.0985
zu1.025
.InformationsquelleAutor Pierre Lapointe