Ausdrücke für das Themenformat verwendenIch versuche, die Formatierung mehrerer ähnlicher Diagramme in einen Ausdruck umzuwandeln, sodass ich einen einzelnen Abschnitt des Codes ändern kann, um alle Diagramme zu aktualisieren, die gleich aussehen. Es fällt mir jedoch schwer, es in Code zu implementieren. Ich füge ein minimales Arbeitsbeispiel hinzu, das zeigt, wie ein Plot aussehen soll und wie mein Code aussehen soll, wobei ich einen Codeabschnitt für die Formatierung und einen kompakten Code für jeden Plot speichere. Irgendeine Idee, wie ich das ändern kann, damit es funktioniert? Ich arbeite an JMP Version 15.2.
dt = New Table( "Minimal Working Example",
Add Rows( 400 ),
New Column( "X", Numeric, Set Values( Repeat( 1 :: 20, 20 ) ) ),
New Column( "Y", Numeric, Set Values( Sort Ascending( Shape( Repeat( 1 :: 20, 20 ), 1 ) ) ) ),
New Column( "Size", Numeric, <<FORMULA></FORMULA>
<LINGO-LABS id="lingo-labs-398923" slang="en-US" mode="UPDATE"><LINGO-LABEL>Erweiterte statistische Modellierung</LINGO-LABEL><LINGO-LABEL>Datenzugriff</LINGO-LABEL><LINGO-LABEL>Datenmischung und -bereinigung</LINGO-LABEL><LINGO-LABEL>Massenanpassung</LINGO-LABEL></LINGO-LABS>Betreff: Ausdrücke für Theme-Format verwendenHallo,
Die Ausdrucksbehandlung ist leistungsstark und erfordert ein wenig Übung. Hier ist ein Beispiel für den Einstieg, aber Sie sollten sich über Dinge wie Eval(), Ausdr(), NameAusdr(), Substitute(), Substitute Into() usw. informieren.
Names Default To Here(1);
//make a 5-column table
dt = astable((1::20)` || J(20,4,randominteger(0,20)));
//the x column will be the first column
xCol = column (dt, 1);
//the y columns will be the remaining columns
yColList = (dt << get column names())[2::ncol(dt)];
//write the graph builder script, wrapping it in an expression. Use _XXX_ format for things
//you'll be substituting later. Here, that is just the "y" variable for a particular graph.
gbExpr = expr(
dt << Graph Builder(
Variables( X( xcol ), Y( _Y_ ) ),
Elements( Points( X, Y, Legend( 8 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
8,
Properties(
0,
{gradient( {Color Theme( "White to Red" )} )},
Item ID( "Size", 1 )
)
)}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {8, [0, -1]} ), Legend Position( {0, -1} )}
)
)
);
);
//cycling through the items in yColList, we create a graph for each y variable vs the x variable.
//be sure to read up on Name Expr ( ), as it is needed here to prevent evaluation of the Graph
//Builder script... we just want the code itself... we don't want JMP to try to evaluate the code
//until after we've made the substitution.
for (i = 1,i <=nitems(ycolList), i++,
eval(Substitute( nameExpr(gbExpr), expr(_Y_) , expr(yColList[i])));
);
Prost,
Brady
Betreff: Ausdrücke für das Designformat verwendenDas hat aufgrund der Art und Weise, wie sich die X-, Y- und Farbvariablen in meinen Daten ändern, nicht besonders gut funktioniert. Mit JSL Quote, Eval Insert, Parse und Eval habe ich jedoch eine Lösung gefunden, die meinem Wunsch näher kommt:
// A theme format I could change for a gazillion of plots
formats = JSL Quote(
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
8,
Properties(
0,
{gradient( {Color Theme( "White to Red" )} )},
Item ID( "Size", 1 )
)
)}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {8, [0, -1]} ), Position( {0, -1} )}
)
)
);
// How I would like each plot code to look like
Eval(Parse(Eval Insert("dt << Graph Builder(
Variables( X( :X ), Y( :Y ), Color( :Size ) ),
Elements( Points( X, Y, Legend( 8 ) ) ),
^formats^
);")));