Datenfilter für SchleifeHallo,
Ich bin ziemlich neu im Scripting. Ich verstehe die for-Schleife, aber ich brauche hier ein wenig Hilfe.
Ich kann das for-Schleifenbeispiel für einen Datenfilter im Skripthandbuch nicht finden. Wenn mir jemand bei der Syntax helfen könnte, wäre das großartig.
Was ich versuche, ist, dass ich eine Baumkarte habe und eine „for“-Schleife mit der Datenfiltertabelle erstellen muss, um die Diagrammausgaben automatisch als PNG-Datei zu speichern.
Ich habe eine Abbildung beigefügt. Beispiel: Bedingung 1: Wafer 11, Auswahl aller Vpp-Trimsets für 25 °C und Formel Nr. (1 Diagramm)
Bedingung 2: Wafer 12, Auswahl aller Vpp-Trimsets für 85 °C (0,11111) und Formel Nr. (1 Diagramm)
Bedingung 3: Zeichnen jedes Trimset-Werts für alle für Wafer 11 (9 Diagramme) und Wafer 12 mit JA (2 Diagramme)
Ich kann es tun, wenn ich es einzeln in einem Code mache, aber nicht zusammen.
Danke
Betreff: Datenfilter für SchleifeDanke @David_Burnham , @Craige_Hales Craige und @txnelson
Ihr rockt!
Betreff: Datenfilter für SchleifeHübsch!Betreff: Datenfilter für SchleifeDas Beispiel, das ich unten gebe, enthält Code, der Kombinationen überspringt, für die es keine Zeilen gibt
http://www.pega-analytics.co.uk/blog/scripting-data-filters/
Betreff: Datenfilter für SchleifeIch verstehe, was los ist. Vielen Dank für die wirklich gute Erklärung, Craige.
Ich glaube, wenn die Bedingung keine mit der Bedingung verknüpften Zeilen findet, bricht sie ab und stoppt.
„Diese Where-Klausel für die Datentabelle ‚Final Table‘ ergab keine Zeilen: Wafer == „12“ & Formula == Empty()“
Kann es stattdessen so fortfahren, dass es weiterhin mit der Schleife zeichnen kann?
Betreff: Datenfilter für Schleifeund im Beispielcode ist gb ein Plattform Objekt. Die Bericht ()-Funktion fragt das Plattformobjekt nach der DisplayBox, die den sichtbaren Bericht der Plattform enthält. Der Plattform ist nicht bekannt, dass es weitere DisplayBoxes gibt. Sie müssen die <Betreff: Datenfilter für Schleife
Rechts. oder gb wurde nie festgelegt, oder gb ist bereits geschlossen.
Sie können verwenden
show(type(gb));
showproperties(gb);
in Ihrem Skript, um einige Informationen über das Objekt zu erhalten. Im Protokoll sollte etwa Folgendes zu sehen sein:
Type(gb) = "Scriptable";
Show Control Panel [Boolean] [Default On] (Displays or hides the control panel.)
Show Legend [Boolean] [Default On] (Displays or hides the legend to the right of the graph.)
Legend Position [Enum] {Right, Bottom, Inside Left, Inside Right}
Legend Settings [Action](Opens a dialog to modify the properties of the legend.)
Continuous Color Theme [Action](Se .... < a lot more follows>
In JMP ist ein „skriptfähiges“ Objekt ein Objekt wie ein Vitrine oder ein Plattform (oder viele andere Möglichkeiten), die Methoden haben. Eine DisplayBox hat eine Methode mit dem Namen Elternteil Dies wird mit dem <<-Operator verwendet, um die übergeordnete Box der DisplayBox abzurufen. Die ShowProperties-Funktion listet alle Methoden auf, die der DisplayBox bekannt sind. Sie können diese im Skriptindex (unter dem Hilfemenü) in einer leichter lesbaren Form sehen.
Wenn Ihr Skript sagt „Es wird ein skriptfähiges Objekt erwartet...“, bedeutet dies, dass die GB-Variable kein skriptfähiges Objekt enthält.
Betreff: Datenfilter für SchleifeAufgrund Ihres Kommentars glaube ich, dass Sie ein Missverständnis von Craigs Drehbuch haben, das er gepostet hat.In seinem Code ist nie mehr als eine Instanz des Graph Builders gleichzeitig geöffnet.Der Zeiger auf den Graph Builder, „gb“, zeigt auf die aktuelle Ausführung des Graph Builders.Es erstellt ein Bildobjekt der Graph Builder-Ausgabe und speichert es in einer Datei.Dann schließt es das Graph Builder-Objekt (gb<
Wenn Ihr Code mehrere Graph Builder generiert und jeder „gb“ als Handle verwendet, das auf die Graph Builder-Instanz verweist, verweist „gb“ nur auf die letzte Graph Builder-Instanz.
Betreff: Datenfilter für SchleifeHallo Craige,
Ich habe es implementiert und angefangen, die for-Schleifen zu erweitern.
Ich habe diese Fehlermeldung erhalten: „Send Expects Scriptable Object{630}“ beim Zugriff oder bei der Auswertung von „Send“, Report( gb) << /*###*/parent/*###*/... Liegt es daran, dass zu viele Fenster geöffnet sind und JSL nicht erkennt, auf welche GB ich mich beziehe?Betreff: Datenfilter für SchleifeDanke, CraigeBetreff: Datenfilter für Schleifedt = Open( "$sample_data/big class.jmp" );
ages = Data Table( "big class" ) << Summary( Group( :age ), Freq( "None" ), Weight( "None" ) );
sexes = Data Table( "big class" ) << Summary( Group( :sex ), Freq( "None" ), Weight( "None" ) );
Delete Directory( "$temp/myPics" );
Create Directory( "$temp/myPics" );
For( iage = 1, iage <= N Rows( ages ), iage++,
thisAge = ages:age[iage];
For( isex = 1, isex <= N Rows( sexes ), isex++,
thisSex = sexes:sex[isex];
Eval(
Eval Expr(
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
)
);
parentBox = (Report( gb ) << parent)< picture = parentBox << getpicture;
picture << saveImage( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png", "png" );
// optional: Open( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png" );
gb << closewindow;
);
);
Close( ages, "nosave" );
Close( sexes, "nosave" );
Show( Files In Directory( "$temp/myPics" ) );
Es sieht so aus, als müssten Sie sich möglicherweise die „Großeltern“-Anzeigebox für den Graph Builder schnappen; Der übergeordnete)<
screen capture of large icons of graphs saved by scriptscreen capture of large icons of graphs saved by scriptScreenshot von großen Symbolen von Diagrammen, die per Skript gespeichert wurden
Betreff: Datenfilter für SchleifeJa, aber der Graph Builder akzeptiert auch Where-Klauseln.
Am besten,
M
Betreff: Datenfilter für SchleifeIch glaube, dass es sich bei diesem Beispiel um eine angepasste y-x-Verteilung handelte. Ich versuche es für eine Baumkarte im Graph Builder zu tun. Ich werde es versuchen. Vielen Dank, M_Anderson
Betreff: Datenfilter für SchleifeDu könntest es versuchen @Craige_Hales Antwort auf diese Frage- Verknüpfung . Anstatt zu versuchen, mit dem lokalen Datenfilter zu arbeiten, ist das Hinzufügen einer where-Klausel in Ihren Plattformaufruf wahrscheinlich eine elegantere Möglichkeit, das zu erreichen, was Sie suchen.