/*""" Versuch, den y-Wert vom Graph Builder LineSeg abzurufen. Autor: jthi. Erstellungsdatum: 30.07.2024. Erstellung JMP-Version: JMP Pro 18.0.0. Beschreibung: Ursprünglicher Beitrag, der mich auf diese Idee brachte (LinesSeg).
https://community.jmp.com/t5/Discussions/How-to-get-exact-cumulative-Prob-at-specified-value-in-CDF-Plot/mp/777203 """*/ Namen werden standardmäßig hier verwendet (1); //
https://community.jmp.com/t5/JMPer-Cable/Understanding-cubic-splines/ba-p/39511 kann eine interessante Lektüre sein: dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp"); slider_x = 200; nw = Neues Fenster("Test", V-Liste(ausrichten("zentrieren"), V-Liste(Textfeld("Anpassen, um X zu ändern"), Schieberegler(110, 530, Schieberegler_x, nw << Fenster aktualisieren, << Breite festlegen(1000)); ), Textfeld("Einstellungen für die Glättung des Graph Builders ändern, um Änderungen und unterschiedliche Anpassungen anzuzeigen"), gb = dt << Graph Builder(Größe(1000, 600), Systemsteuerung anzeigen(1), An Fenster anpassen("Ein"), Variablen(X(:PNP1), Y(:NPN1)), Elemente(Glättung(X, Y, Legende(4))) ); ); ); fb = Bericht(gb)[Rahmenfeld(1)]; /* ls = fb << Seg suchen(Liniensegment(1)); m_x = ls << X-Werte abrufen; m_y = ls << Y-Werte abrufen; glatt = ls << Glätte abrufen; idx = Loc Sorted(m_x, Matrix(xval))[1]; // {Schätzungen, Standardfehler, Diagnose} = Lineare Regression(m_y[idx::idx+1], m_x[idx::idx+1]); // yval = Schätzungen[2] * xval + Schätzungen[1]; idx = Loc Sorted(m_x, Matrix(xval))[1]; yval = Interpolieren(xval, m_x, m_y); Bericht(gb)[Achsenbox(1)] << Referenzlinie hinzufügen(xval); Bericht(gb)[Achsenbox(2)] << Referenzlinie hinzufügen(yval); */ /* m_x[2::N Zeilen(m_x)::2] - m_x[1::N Zeilen(m_x) - 1::2] m_y[2::N Zeilen(m_y)::2] - m_y[1::N Zeilen(m_y) - 1::2] sl = Spline Smooth(m_x, m_y, smooth); */ Report(gb)[FrameBox(1)] << Grafikskript hinzufügen( ls = fb << Seg suchen(LineSeg(1)); m_x = ls << X-Werte abrufen; m_y = ls << Y-Werte abrufen; Marker(Markierungsstatus(3), m_x, m_y); Stiftgröße(1); Linie(m_x, m_y); yval = Interpolieren(Schieberegler_x, m_x, m_y); Markierungsgröße(5); Marker(Markierungsstatus(12), {Schieberegler_x, yval}); V-Linie(Schieberegler_x); H-Linie(yval); Text(Rechtsbündig, Eval-Liste({Schieberegler_x, yval + 1}), Eval-Einfügen("(^Runden(Schieberegler_x, 3)^, ^Runden(yval, 3)^)")); Spitzen = m_y[1::N Zeilen(m_y) - 2] < m_y[2::N Zeilen(m_y) - 1] & m_y[2::N Zeilen(m_y) - 1] > m_y[3::N Zeilen(m_y)] | m_y[1::N Zeilen(m_y) - 2] > m_y[2::N Zeilen(m_y) - 1] & m_y[2::N Zeilen(m_y) - 1] < m_y[3::N Zeilen(m_y)]; peak_idx = Loc(peaks) + 1; Markierungsgröße(3); Füllfarbe("Rot"); Markierung(Zustände kombinieren(Farbzustand("Rot"), Markierungszustand(15)), m_x[peak_idx], m_y[peak_idx]); );