Hallo,
Ich habe die Aufgabe, einige Visualisierungen als Tabellenskripte zu skripten.Normalerweise ist das einfach. Der grobe Teil sind die Referenzzeilen, die auf andere Quellen verweisen müssen, wenn das Skript ausgeführt wird.Da die Referenzen in zwei Funktionen enthalten sind, die normalerweise keine Variablen von außen akzeptieren, liegt das Herausfinden, wie man Ausdrucksmanipulationen verwendet, um diese Werte einzufügen, derzeit außerhalb meiner Fähigkeiten. Es gibt mehrere Hindernisse zu überwinden.
- Funktionen, die externe Variablen nicht gut akzeptieren
- var1 = 1;
var2 = 2;
Dt << Neues Skript( "Beispiel", print( var1 + var2 ) ); - Beachten Sie, dass die Variablen aus dem Tabellenskript heraus definiert werden. Dies ist eine Voraussetzung, da die Nummern aus einer Datentabelle referenziert werden.
- Versenden()
- Werte innerhalb davon müssen statische, einfach angegebene Werte sein
- Arbeiten mit Ausdrücken, die keine Funktionen enthalten
- Beispiel = expr (Neues Skript ());
Titel = „Test“;
einfügen in (Beispiel, Titel); // show(example) = Neues Skript( „test“ )
// Später beim Einfügen von Spalten in die x-Achse, wie in Zeile 22 des Beispiels…
x_leer = expr( X() );
x_cols = { :col1, :col2 };
einfügen in (x_empty, x_cols[1]); // Fehler ausgegeben, JMP weiß nicht, was X() ist - Das sagt mir, dass X() irgendwie nicht ausgewertet werden muss, aber trotzdem das Einfügen von Elementen zulassen muss, was Namen wie expr() und expr() tun sollen, aber sie funktionieren in diesem Fall nicht
Das Beispielskript enthält ein vereinfachtes Beispiel dessen, was ich erreichen möchte. Die Titel und Nummern in der neu generierten Tabelle müssen in das Tabellenskript eingefügt werden, bevor die Funktion zum Einfügen in Big Class ausgeführt wird. Ich habe ein einfaches Beispiel dafür am Ende des Skripts.
Names default to here(1);
clear log();
// Reference table
// Used to populate data in table script below for dt( big )
dt = New Table( "Example",
Add Rows(2),
New Column( "Growth Label", Character, Nominal, Set Values( { "Tall", "Short" } ) ),
New Column( "Height tag", Numeric, Continuous, Set Values( { 67.5, 60 } ) ),
);
// Example table
big = open( "$SAMPLE_DATA/Big Class.jmp" );
// Plain example - vis added as table script * works *
big << New Script( "Example",
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Fit to Window,
Set α Level( 0.05 ),
Variables( X( :weight ), X( :age ), Y( :height ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"height",
ScaleBox,
{Add Ref Line( 67.5, "Dashed", "Medium Dark Green", "Tall", 1 ),
Add Ref Line( 60, "Dashed", "Medium Dark Red", "Short", 1 )}
)
)
)
);
// Needed info for below
vis_x = { :weight, :age };
vis_y = { :height };
// Modified example - vis added as table script * not working *
big << New Script( "Example",
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Fit to Window,
Set α Level( 0.05 ),
Variables( X( vis_x[1] ), X( vis_x[1] ), Y( vis_y[1] ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"height",
ScaleBox,
{Add Ref Line( big:Height tag[1], "Dashed", "Medium Dark Green", big:Growth Label[1], 1 ),
Add Ref Line( big:Height tag[2], "Dashed", "Medium Dark Red", big:Growth Label[2], 1 )}
)
)
)
);
// Example: expression manipulations
var1 = 10; // represents some reference number, from somewhere
var2 = 1; // represents some reference number, from somewhere
expr_test = eval expr( expr(var1) + expr(var2) );
expr_begin = expr( New Script( "Var replacement" ) );
insert into( expr_begin, name expr( expr_test ) );
show( expr_begin );
eval( eval expr( big << expr( name expr( expr_begin ) ) ) ); // Script contains: 10 + 1
/* Notice how the table script "Var replacement" in big doesn't contain var1 & var2,
it contains the values they represent. This is what I want to do. */
close( dt, "No Save" );Die Suche nach "Referenzlinien" liefert in den Community-Foren einige Ergebnisse. Das nächste Beispiel, das ich bisher gefunden habe, sind die folgenden Links.
https://community.jmp.com/t5/Discussions/Is-there-a-way-to-automatically-draw-ref-lines-at-the-peak-of/mp/87721/highlight/false#M38710
https://community.jmp.com/t5/Discussions/Fill-color-for-multiple-reference-lines/mp/273205