Hallo JMP-Community!
Ich habe den folgenden Code als Teil eines von mir erstellten Add-Ins:
Report7 = Platform(
dt,
gb7 = Graph Builder(
Size( 632, 571 ),
Show Control Panel( 0 ),
Fit to Window( "Maintain Aspect Ratio" ),
Variables( X( :Order No. ),
Y( :S0a value, Position( 1 ) ),
Y( :S1a value, Position( 1 ) ),
Y( :S1b value, Position( 1 ) ),
Y( :S1c value, Position( 1 ) ),
Y( :S2a value, Position( 1 ) ),
Y( :S3a value, Position( 1 ) ),
Y( :S4b value, Position( 1 ) ) ),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Y( 5 ),
Y( 6 ), Y( 7 ), Legend( 11 ) )
),
)
);Das Problem ist, dass ich nicht immer alle Spalten habe, die das Add-in auf der Y-Achse darstellen soll (z. B. enthält die Datentabelle möglicherweise nur S0a – S1c statt S0a – S4b). Wenn dies der Fall ist, ist das resultierende Diagramm nur ein Histogramm der x-Achsen-Spalte (dh der „Bestellnummer“).
Gibt es eine Möglichkeit, den Code dazu zu bringen, alle verfügbaren Spalten darzustellen und diejenigen, die nicht verfügbar sind, automatisch zu ignorieren? Ich bin auch offen für andere Ideen.
Vielen Dank im Voraus!
Ahmed
Dies könnte eine Option sein. Sie müssten die Variablenspalten mit der tatsächlichen Liste füllen, die Sie einschließen möchten:
Names default to here(1);
dt = Open("$Sample_data/probe.jmp");
//Variables to hold the dynamic parts of the graph builder expresssion
Expr1 = "";
Expr2 = "";
// Pick columns to include
cols = ( dt << get column names() )[random shuffle(8::397)[1::5]];
//Populate expressions
for(c=1, c<= n items(cols), c++,
Expr1 = Expr1 || "Y( Column( \!"" || cols[c] || "\!" ), Position(1) ),";
Expr2 = Expr2 || "Y( " || char( c ) || " ),";
);
Eval( Parse( substitute(
//the graph builder script as a string with 'dummy variables' where the
//expressions created earlier will go
"gb = Graph Builder(
Size( 838, 391 ),
Variables(
X( :DELL_RPPBR ),
Expr1_
),
Elements( Line( X, Expr2_ Legend( 10 ) ) ),
Local Data Filter(
Add Filter(
columns( :DELL_RPPBR ),
Where( :DELL_RPPBR >= -1 & :DELL_RPPBR <= 0.483837991952896 )
)
)
)",
//replace the 'dummy variables'
"Expr1_",
Expr1,
"Expr2_",
Expr2
) ) );