Abrufen von Linienscandaten aus Konturdiagrammen in JMPHallo,
Ich habe ein Konturdiagramm und möchte sehen, wie die Daten entlang einer Linie im Konturdiagramm variieren.
Das Konturdiagramm ist beispielsweise ein Filmdicken-Konturdiagramm. Und ich würde gerne sehen, wie sich die Dicke entlang einer Linie ändert, die ich irgendwo im Konturdiagramm zeichne.
Ist das möglich?
Yoga
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPYoga,
Es gibt mehrere Methoden, um einer Datentabelle ein Skript hinzuzufügen.Ich denke, JMP könnte es einfacher machen. Zur Information: Dieses Skript zeigt nur drei Methoden zum Hinzufügen eines Skripts.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myScript = Expr(Distribution( Column( :Height, :Weight ), By( :sex )) );
//---hard coded method below
//dt << New Script("New Script",Distribution( Column( :Height, :Weight ), By( :sex )) );
//--or use the syntax below that uses expression substitution then Eval() to run it
//Eval( Substitute(Expr( dt << New Script( "New Script", _xx ) ), Expr(_xx), NameExpr(myScript) ) );
//---or use Eval Expr() that does the substitution and Eval() that runs it
Eval( Eval Expr(dt << New Script("New Script", Expr(NameExpr( myScript) ) ) ) );
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPHallo Morgan,
Der Beispielcode, den Sie für mein Beispiel gesendet haben, enthielt einige (geringfügige) Syntaxfehler. Es hat einige Zeit gedauert (ich bin sehr neu im JMP-Scripting), das Problem zu beheben, aber es funktioniert endlich so, wie ich es möchte. Nochmals vielen Dank für die Hilfe. Ich füge das geänderte Skript unten für andere bei, die es vielleicht möchten.
Mir ist auch klar geworden, dass ich keinen (langen) Speicherortpfad angeben muss, wenn das Skript in der Datentabelle gespeichert ist. Seltsamerweise kann ich keine neue Skriptdatei in der Datentabelle speichern. Es muss als separate JSL-Datei gespeichert werden. Um dieses Problem zu umgehen, öffne ich ein bereits vorhandenes Skript in meiner Datentabelle und ändere es, um das neue Skript einzugeben.
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPHallo Morgan,
Danke noch einmal. Ich schätze es sehr. Werde meine Skripte entsprechend anpassen.
Yoga
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPIch habe Erfahrung mit Halbleiterdaten und verstehe daher, dass ich für jeden Wafer oder jede Struktur eine Analyse durchführen möchte.Aus Ihrer Aussage „ Es funktioniert für ein Objekt. Wenn es mehrere Objekte gibt, bin ich mir nicht sicher, wie ich sie gruppieren soll.„Ich gehe davon aus, dass Ihre Datei eine Spalte namens „Wafer“ und/oder „Struktur“ enthält.
Zunächst einmal muss eine Datentabelle nicht dt genannt werden. Ich verwende zwar Variablenverweise um, aber der Aufruf all dieser Tabellen als dt könnte in einem größeren Skript zu Verwirrung führen.Namenskollisionen nach Syntax und Tippfehler sind die häufigsten Ursachen dafür, dass Skripte nicht funktionieren.
Wenn Sie für Ihr Skript damit einverstanden sind, dass alle Diagramme nacheinander in einem Journal platziert werden, ist hier mein Änderungsvorschlag für Ihr Skript, um eine „nach Gruppe“ zu verarbeiten. Weitere Informationen finden Sie unter diesem Skript.
subp = dt << Bivariate ( Y(:Name( "Rdson" )), X(:X), By(:Wafer) );
xx = subp << Find (Outline Box ("Bivariate ?") );
//this returns all outline boxes with Bivariate in the title, should be one for each wafer
//This adds the title but maintains the By Wafer = xxxxxxx
For(i=1, i <=nitems(xx), i++,
ttl = xx[i] << get title;
p = Contains( ttl, "By"); //find the position of the word By
xx[i] << Set Title(" Rdson Contour at Y==0 " || substr(ttl, p, 100) ); //something large
);Es gibt jedoch auch andere Methoden, mit denen Sie einen Bericht so gestalten können, dass Sie jeden Wafer mit jedem der Scans nebeneinander sehen können.Unten finden Sie ein Beispiel für die Verwendung von Big Class. Ich habe ein Skript angehängt (siehe Dateien). Da ich keine Testtabelle habe, kann ich nicht garantieren, dass es funktioniert, aber vielleicht möchten Sie es ausprobieren.
Names default to here(1);
open("$sample_data/Big Class.jmp");
nw = new window("example", lineupbox(ncol(2), Distribution(
Continuous Distribution( Column( :weight, Horizontal Layout(1) ) ),
Histograms Only,
By( :age, :sex )
)));
nw << journal window();
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPHallo Morgan (und alle),
Ich habe es geschafft, es für meine Datentabelle zum Laufen zu bringen. Mir wurde auch klar, dass ich nicht ständig das Konturdiagramm verwenden muss. Ich könnte eine Untertabelle erstellen, in der alle X==0 sind, und die Daten entlang Y und umgekehrt erhalten, und alle anderen Koordinaten, die ich möchte, sind ebenfalls möglich. Das von Ihnen bereitgestellte Skript hat sehr geholfen.
Jetzt versuche ich herauszufinden, wie man das über mehrere Objekte hinweg macht. Mein Beispielskript ist unten. Es funktioniert für ein Objekt. Wenn es mehrere Objekte gibt, bin ich mir nicht sicher, wie ich sie gruppieren soll. Irgendwelche Eingaben dazu? Ich würde es sehr schätzen.
In meinem Skript erhalte ich gerade alle Daten für ein Objekt. Ich muss das Gleiche jedoch an einem anderen Objekt wiederholen. Alle Objekte fallen in eine Kategorie, beispielsweise „Wafer“ oder „Struktur“ ...
Namen sind standardmäßig hier(1);
dt = open("C:/Users/yoga_***/***.jmp");
dt << Select Where (:Y == 0);
dt << Subset(Output Table("Subset"),Selected Rows(1), Selected Columns (0));
dt = Datentabelle("Subset");
subp = dt << Bivariate ( Y(:Name( "Rdson" )), X(:X) );
report(subp)[OutlineBox(1)] << Set Title( "Rdson Contour at Y==0" );
subp << Journal Window();
subp << Fenster schließen();
dt = open("C:/Users/yoga_***/***.jmp");
dt << Select Where (:X == 0);
dt << Subset(Output Table("Subset2"),Selected Rows(1), Selected Columns (0));
dt = Datentabelle("Subset2");
subp = dt << Bivariate ( Y(:Name( "Rdson" )), X(:Y) );
report(subp)[OutlineBox(1)] << Set Title( "Rdson Contour at X==0" );
subp << Journal Window();
subp << Fenster schließen();
dt = open("C:/Users/yoga_***/***.jmp");
dt << Select Where (0,95 < :X/:Y < 1,05);
dt << Subset(Output Table("Subset3"),Selected Rows(1), Selected Columns (0));
dt = Datentabelle("Subset3");
subp = dt << Bivariate ( Y(:Name( "Rdson" )), X(:X) );
report(subp)[OutlineBox(1)] << Set Title( "Rdson Contour at X==Y" );
subp << Journal Window();
subp << Fenster schließen();
close(Data Table("Subset"), NoSave);
close(Data Table("Subset2"), NoSave);
close(Data Table("Subset3"), NoSave);
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPHallo Morgan,
Das ist genau das, was ich will. Normalerweise mache ich diese Unterroutine ohne Skript. Dieses Skript hilft.
Jetzt versuche ich herauszufinden, wie ich dieses Skript in meine aktuelle Anforderung integrieren kann.
Sie auf dem Laufenden halten.
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPHallo Morgan,
Danke für die ausführliche Antwort. Ich werde versuchen, Sie (alle) auf dem Laufenden zu halten.
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPEs gibt mehrere Methoden, um eine Querschnittsansicht einer Kontur zu erhalten.Es handelt sich jedoch möglicherweise nicht um eine integrierte oder einzelne Anweisung, die möglicherweise in anderen Programmen verfügbar ist.
Ich habe ein Skript namens angehängt ContourCrossSection.jsl . Es werden die JMP-Beispieldaten „Little Pond.jmp“ verwendet. Die Daten stellen die Tiefen eines Teichs dar. Es erstellt eine Kontur, eine einzelne Querschnittsansicht (mit „Y nach X anpassen, Bivariat“) und eine Vergleichsansicht von drei Querschnitten (mit „Graph Builder“).
Wenn Sie mit JSL nicht vertraut sind, führen Sie einfach das Programm aus. Ich habe es in JMP12, 13 und 14 getestet. Der Schlüssel liegt in der Option, die Sie über die Konturdiagrammoptionen erhalten.Wählen Sie im JMP-Countour-Plot das rote Dreiecksmenü aus und wählen Sie aus Speichern , dann auswählen Raster generieren .Geben Sie die Anzahl der X- und Y-Scheiben an, und ein X-Y-Gitter wird generiert.
Hier noch ein paar weitere Ideen:
- Wenn die Anzahl der Abtastpunkte nicht dicht ist, sollten Sie die Erstellung einer glatteren Kurve mit einem neuronalen Netz oder einer anderen Plattform in Betracht ziehen. Manchmal ist die Triangulation deaktiviert. Bei einer Funktion gibt es mehrere Methoden, um einen Querschnitt zu erhalten.
- Erfahren Sie, wie Sie den Contour Profiler mit einem Netz verwenden. Fügen Sie dann einen lokalen Datenfilter aus dem Menü hinzu und stellen Sie den Y- oder X-Bereich auf etwa 50 <=Y <= 50,1 ein. Das ist alles interaktiv. Es gibt weitere Optionen im Profiler.
- Wenn Sie dies problemlos von einem anderen Programm erhalten können, auf das Sie Zugriff haben, können Sie mit JSL und Run Program auf R, MatLab, SAS und in JMP14 auf Python zugreifen.
Hoffe das hilft.
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPHallo Cameron,
Nein, kein glättender Spline. Es sieht so aus, als gäbe es jetzt keine Möglichkeit, es zu bekommen, es sei denn, ich folge dem verschlungenen Weg, Teilmengen von Daten zu bekommen.
Es sollte jedoch nicht allzu schwierig sein, diese Funktionalität in jmp hinzuzufügen. Es ist normalerweise in vielen Softwareprogrammen vorhanden, die Parameter im XY-Diagramm abbilden, um ein Konturdiagramm zu erstellen. Und wir können spielen, um zu sehen, wie es entlang jeder Linie, die wir durch die Kontur zeichnen, variiert.
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPBeschreiben Sie einen Querschnitt der Folie wie ein Profil quer zur Bahn an einem bestimmten Schnitt entlang der Abwärtsrichtung der Bahn? Wenn ja, glaube ich nicht, dass es eine Möglichkeit gibt, dies mit dem Konturprofiler zu erreichen.
Müssen Sie eine Linie zeichnen, die wie ein glättender Spline zwischen Datenpunkten in diesem Querschnitt interpoliert?
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPHallo Cameron,
Nicht genau. Ich suche nach der Parametervariation, wenn ich eine Linie von einem Ende zum anderen meines Konturdiagramms zeichne. Ich werde versuchen, es hier bestmöglich zu veranschaulichen.
Ich habe ein Konturdiagramm der auf einem Substrat variierenden Filmdicke. Dann könnte ich ein beliebiges X (oder Y) auswählen und eine Linie von einem Ende zum anderen zeichnen. Angenommen, ich möchte, dass alle Punkte bei Y=0 liegen, aber X zwischen -50 und +50 variiert. Ich zeichne eine horizontale Linie von -50 bis +50. Dann würde ich gerne sehen, wie sich die Dicke entlang dieser Linie ändert und an der Seite ein Diagramm angezeigt wird.
Ich könnte das auf eine verschlungene Art und Weise machen. Nehmen Sie den Datensatz. Nehmen Sie dann eine weitere Teilmenge aller Datenpunkte mit Y=0. Tragen Sie dann die Dicke gegen X auf (für alle Y=0).
Ich möchte, dass dies im Hintergrund möglich ist, wenn ich einfach irgendwo eine Linie zeichne.
Betreff: Abrufen von Linienscandaten aus Konturdiagrammen in JMPHallo @Yoga ,
Wollen Sie damit Datenpunkte über Ihrem Konturdiagramm darstellen?Wenn ja, schauen Sie sich diesen Thread an: https://community.jmp.com/t5/Discussions/Adding-special-data-points-with-labels-to-a-contour-plot/mp/52455