JMP 社区您好!
我有以下代码作为我制作的加载项的一部分:
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 ) )
),
)
);问题是我并不总是拥有要求加载项在 y 轴上绘制的所有列(例如,数据表可能只有 S0a - S1c 而不是 S0a - S4b)。 在这种情况下,生成的图只是 x 轴列(即“订单号”)的直方图。
有没有一种方法可以使代码绘制任何可用的列并自动忽略不可用的列? 我也对其他想法持开放态度。
先感谢您!
艾哈迈德
这可能是一个选项,您需要使用您想要包含的实际列表填充变量 cols:
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
) ) );